Re: Специализация шаблонов по 2 параметрам
От: andyp  
Дата: 18.02.16 12:57
Оценка: 1 (1) +1
Здравствуйте, SVV, Вы писали:

SVV>Доброго всем времени суток,


SVV>есть такой класс:


SVV>
SVV>template<class T>
SVV>class Test
SVV>{
SVV>public:
SVV>    template<class T2>
SVV>    Test(const T2* sz)
SVV>    {
SVV>        printf ("common version\n");
SVV>    }
SVV>    template<>
SVV>    Test(const char* sz)
SVV>    {
SVV>        printf ("T.a. str: %s\n", sz);
SVV>    }
SVV>    template<>
SVV>    Test(const wchar* sz)
SVV>    {
SVV>        printf ("T.w. str: %S\n", sz);
SVV>    }
SVV>protected:
SVV>};
SVV>template<>
SVV>Test<char>::Test<wchar>(const wchar* sz)// не компилируется
SVV>{
SVV>    printf ("a.w. str: %S\n", sz);
SVV>}
SVV>


SVV>предположим, в качестве T будут использоваться типы char и wchar, как и в качестве T2. Как прописать специализацию не только по Т2?



template<> внутри класса не нужны.

Специализацию Test<char> придется определить полностью, так как для компилятора это отдельный класс, никак не связанный с общим шаблоном Test<T>, и никаких ожиданий по методам класса, которые должны быть определены, у него нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.