为什么我不能用模板化的 class 专门化 class 模板?
Why can't I specialize class template with a templated class?
为什么不允许以下部分专业化? class 专门用于模板化 class:
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
我最初遇到的问题是我忘记包含 class 的 header 我试图专攻!当然,这永远行不通,但错误消息不够清楚:我没有得到 undefined identifier
或类似的东西,这些东西本来更有用。所以这就是为什么我摆弄语法,尝试 template<>
技巧等
为什么不允许以下部分专业化? class 专门用于模板化 class:
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
我最初遇到的问题是我忘记包含 class 的 header 我试图专攻!当然,这永远行不通,但错误消息不够清楚:我没有得到 undefined identifier
或类似的东西,这些东西本来更有用。所以这就是为什么我摆弄语法,尝试 template<>
技巧等