Ниже приводится «Внутренняя ошибка компилятора» в MSVC ++ 10 Sp1.
И в gcc:
b.cpp: 16: 12: ошибка: явная специализация в области, не связанной с пространством имен'struct A :: B'
b.cpp: 16: 28: ошибка: идентификатор шаблона 'f' в объявлении основного шаблона
//class template
template< class T>
struct A{
//struct B {}; //Remove the comment and it will compile!
};
//partial specialization
template< class T >
struct A< T* >
{
struct B {
template<class C> void f(){}
//"Internal Compiler Error"
template<> void f<int>(){};
};
};
Однако, если комментарии до struct B
удалено, оно скомпилируется!
Я не понимаю проблемы!