Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ Unit Test (модульное тестирование) https://www.cyberforum.ru/ cpp/ thread441995.html
Вопроса по сути два. 1. что используете для модульного тестирования и почему отдаете этому предпочтение. 2. если используете eclipse, то очень интересует процесс конфигурирования eclipse для...
Сетевой график C++
ПОжалуйста помогите создать программу Задачи работы: - построение сетевого графика; - анализ сетевого графика; -оптимизация сетевого графика. p.s. сижу с сотки, интернет отключен программа...
C++ PopCap Games Framework 1.3
У кого есть ссылка на PopCap Games Framework 1.3 скиньте плииз! С сайта sourceforge.net никак не качается... Форум не место обмена ссылками!
C++ Необычная Dll Есть ли способ написать DLL, в которой есть функция и через неё будут проходить вызовы экспортируемых функций? Например в DLL нет функции Func, и тогда, по-умолчанию вызывается функция Default? https://www.cyberforum.ru/ cpp/ thread439998.html
C++ Сборки MinGW(GCC-win32/win64) от niXman https://www.cyberforum.ru/ cpp/ thread439067.html
с этого момента, буду производить тестовые/пререлизные/релизные сборки mingw. файлы с пометкой snapshot и prerelease - не стабильные версии. в реальных проектах использовать не рекомендую. использую...
Построение и программная реализация автоматных моделей языков C++
Доброе время суток всем. Будьте так любезны кто знает или умеет напишите пожалуйста примеры конечных автоматов. Можно в принципе и на Delphi толь тогда это не тот раздел. И всё же помагите...
Кто может собрать оффсет из crossfire в dll C++
всем привет. я с помощью программы ollydbg нашёл оФФсет игры crossfire ,я могу написать вам его,и чтобы вы его собрали в dll для читы плиз оч нужно
C++ C++ и CS 1.6 Доброго времени суток! У меня возник вопрос, как средствами C++ узнать SteamID клиента CS 1.6 Хотя бы такой вариант! Запускаем созданную программу, затем игру cs 1.6 и в программе появляется... https://www.cyberforum.ru/ cpp/ thread437780.html
C++ Модуль-посредник для wtsapi32.dll https://www.cyberforum.ru/ cpp/ thread435341.html
Здравствуйте. Вот пытаюсь написать модель-посредник для wtsapi32.dll. Судь заключается в том, что этот модуль заменяет оригинальный и просто перенаправляет все на оригинальный функции. При написании...
C++ Последние драфты Приветствую. А можно узнать у вас ссылки на последние драфты по C/C++ на данный момент? C99 (N897) — http://open-std.org/JTC1/SC22/WG14/www/docs/n897.pdf C11 (N1548) —... https://www.cyberforum.ru/ cpp/ thread435272.html
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,557
07.02.2012, 13:24 0

шаблонные методы шаблона. Специализация.

07.02.2012, 13:24. Просмотров 4415. Ответов 5
Метки (Все метки)

Ответ

14
A member or a member template of a class template may be explicitly specialized for a given implicit
instantiation of the class template, even if the member or member template is defined in the class template
definition. An explicit specialization of a member or member template is specified using the syntax for
explicit specialization. [ Example:
template<class T> struct A {
void f(T);
template<class X1> void g1(T, X1);
template<class X2> void g2(T, X2);
void h(T) { }
};
// specialization
template<> void A<int>::f(int);
// out of class member template definition
template<class T> template<class X1> void A<T>::g1(T, X1) { }
// member template specialization
template<> template<class X1> void A<int>::g1(int, X1);
//member template specialization
template<> template<>
void A<int>::g1(int, char);
template<> template<>
void A<int>::g2<char>(int, char);
// X1 deduced as char
// X2 specified as char
// member specialization even if defined in class definition
template<> void A<int>::h(int) { }
— end example ]
15
A member or a member template may be nested within many enclosing class templates. In an explicit
specialization for such a member, the member declaration shall be preceded by a template<> for each
enclosing class template that is explicitly specialized. [ Example:
template<class T1> class A {
template<class T2> class B {
void mf();
};
};
template<> template<> class A<int>::B<double>;
template<> template<> void A<char>::B<char>::mf();
— end example ]
16
N3242=11-0012
In an explicit specialization declaration for a member of a class template or a member template that ap-
pears in namespace scope, the member template and some of its enclosing class templates may remain
unspecialized, except that the declaration shall not explicitly specialize a class member template if its en-
closing class templates are not explicitly specialized as well. In such explicit specialization declaration, the
keyword template followed by a template-parameter-list shall be provided instead of the template<> pre-
ceding the explicit specialization declaration of the member. The types of the template-parameters in the
template-parameter-list shall be the same as those specified in the primary template definition. [ Example:
template <class T1> class A {
template<class T2> class B {
template<class T3> void mf1(T3);
void mf2();
};
};
template <> template <class X>
class A<int>::B {
template <class T> void mf1(T);
};
template <> template <> template<class T>
void A<int>::B<double>::mf1(T t) { }
template <class Y> template <>
void A<Y>::B<double>::mf2() { }
// ill-formed; B<double> is specialized but
// its enclosing class template A is not
— end example ]
14.7.3 нового стандарта.

Добавлено через 11 минут
На тему поддержки стандарта. gcc все делает верно. А вот MSVC не поддерживает данный пункт.

2 An explicit specialization shall be declared in a namespace enclosing the specialized template. An explicit
specialization whose declarator-id is not qualified shall be declared in the nearest enclosing namespace of
the template, or, if the namespace is inline (7.3.1), any namespace from its enclosing namespace set. Such a
declaration may also be a definition. If the declaration is not a definition, the specialization may be defined
later (7.3.1.2).


Вернуться к обсуждению:
шаблонные методы шаблона. Специализация.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2012, 13:24
Готовые ответы и решения:

Специализация шаблона для всех наследников класса
Здравствуйте, есть такой код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; ...

Msvc2015 специализация шаблона для массива нулевого размера
здарова. по стандарту с++, массивы нулевой длины запрещены. warning: ISO C++ forbids zero-size...

Явная специализация шаблона класса и ее методы
На 93 строке явная специализация шаблона класса под char. Но я нигде не могу найти, как мне...

Специализация шаблона
Здравствуйте! Задача: Создайте шаблонную функцию maxn(), которая принимает в качестве...

5
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.