Здравствуйте, 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>, и никаких ожиданий по методам класса, которые должны быть определены, у него нет.