[英]“template definition of non-template” error while using nested templates
我正在尝试使用内部带有静态变量的嵌套模板结构。 我已将代码简化为这个准系统示例。
template<typename T> struct A
{
template<typename U> struct B
{
static const unsigned val;
};
};
template<typename T>
template<typename U>
const unsigned A<T>::template B<U>::val;
这给我错误
template definition of non-template ‘const unsigned int A<T>::B<U>::val’
const unsigned A<T>::template B<U>::val;
我找不到语法到底有什么问题。
您需要将template
放入定义中。 至少在标准意义上,符号B
是不依赖的。 这是本地声明的名称,因为它是在模板A
定义A
。 参见§14.6:
模板定义中可以使用三种名称:
—模板本身的名称,以及在模板本身内声明的名称。
—名称取决于模板参数(14.6.2)。
—在模板定义中可见的作用域名称。
改成:
template<typename T>
template<typename U>
const unsigned A<T>::B<U>::val;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.