1

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

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

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

该行没有用我的编译器编译,但它来自一个正在运行的软件,所以它在某种意义上一定是正确的。

4

1 回答 1

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
于 2013-09-05T13:17:52.573 回答