struct之后的尖括号

时间:2013-09-05 13:02:21

标签: c++ struct class-template

我在理解C ++代码中的以下行时遇到问题:

template<class Variable> struct strVar< :: namespaceName::strVar2_<Variable>> : public trueType {};

struct strVar后的尖括号是什么意思?我以前从未听说过这种风格。

该行不能用我的编译器编译,但它来自正在运行的软件,因此在某种意义上它必须是正确的。

1 个答案:

答案 0 :(得分:3)

该代码定义了类模板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