«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему явная специализация членов класса C ++ терпит неудачу за пределами пространства имен?

Почему явная специализация членов класса C ++ терпит неудачу за пределами пространства имен?

Опубликовано в 2025-04-18
Просматривать:323

Why Does Explicit Specialization of Class Members Fail Outside a Namespace in C  ?

явную специализацию вне имен-пространств Тем не менее, размещение явных специализаций имеет решающее значение, как показано следующим фрагментом кода:

Template Класс Cconstraint { // ... Шаблон void проверка (int position, int ограничения []) { } Шаблон void проверьте (int, int []) { } };

При составлении с G, этот код приводит к ошибке:
template
class CConstraint
{
    // ...

    template 
    void Verify(int position, int constraints[])
    {
    }

    template 
    void Verify(int, int[])
    {
    }
};
явную специализацию в нерсимых областях Cconstraint '

, чтобы понять эту ошибку, нам необходимо изучить стандарт C, который диктует, что Explicit Speciations должно быть заявлено в пределах имен, которое. В приведенном выше примере CConstraint не объявляется внутри пространства имен, и, следовательно, явная специализация проверки является недействительной.

Explicit specialization in non-namespace scope 'class CConstraint'

пространство имен MyNamespace { Шаблон Класс Cconstraint { // ... Шаблон void проверка (int position, int ограничения []) { } Шаблон void проверьте (int, int []) { } }; }

, инкапсуляя Cconstraint в пространстве имен MyNamespace, мы гарантируем, что ее явные специализации также объявлены в этом пространстве имен, разрешая ошибку компиляции.

] дополнительно, поскольку C 03 запрещает специализирующие функции, не подходящие для пояснения, подходящие функции, которые также могут рассматривать, что они также могут рассматривать, что они также могут рассматривать функции. Ответ: DPACE DPACE { Шаблон void verify (int, int []) {} Шаблон void verify (int, int []) {} } шаблон class cconstraint { // ... шаблон void verify (int position, int ограничения []) { Detail :: проверка (позиция, ограничения); } };

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3