2015-03-06 2 views
0

Почему нижняя частичная специализация не допускается? Класс специализируются с шаблонным классом:Почему я не могу специализировать шаблон шаблона с шаблоном?

template <class T> 
class ClassT{}; 

template<class F> 
class ClassF{}; 

//error here 
template<> 
template <class T> 
class ClassF <ClassT<T> >{}; 

int main(int argc, char* argv[]) 
{ 
    ClassF<ClassT<int> > ftx; //no error 
} 

Ошибка:

tester.cpp(8): error C2910: 'ClassF<ClassT<T>>' : cannot be explicitly specialized 
+3

Избавьтесь от первого 'шаблона <>'. – 0x499602D2

+0

Спасибо, что решает проблему в этом минимальном рабочем примере. –

ответ

0

исходная проблема у меня был в том, что я забыл включить заголовок класса я пытался специализироваться! Конечно, это никогда не сработает, но сообщение об ошибке было недостаточно ясным: я не получил undefined identifier или что-то подобное, что было бы более полезным. Вот почему я играл с синтаксисом, пробовал template<> трюк и т. Д.