我在理解C++代码中的以下行时遇到问题:
template<class Variable> struct strVar< :: namespaceName::strVar2_<Variable>> : public trueType {};
struct strVar之后的尖括号是什么意思?我以前从未听说过这种风格。
该行无法使用我的编译器进行编译,但是它来自运行中的软件,因此在某种意义上必须正确。
最佳答案
该代码定义了类模板strVar
的部分特化。在代码的较早位置,必须至少有一个主模板的声明:
template <class T> struct strVar;
然后,您发布的代码提供了一个定义,只要其模板参数(对应于
strVar
)恰好是类模板T
的特化形式,就会将其用于::namespaceName::strVar2_
。例:
strVar<int> x; // will use primary template
strVar<::namespaceName::strVar2_<int>> x; // will use the specialisation
关于c++ - 结构后的尖括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18637112/