gpt4 book ai didi

c++ - 使用嵌套模板时出现 "template definition of non-template"错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:37 25 4
gpt4 key购买 nike

我正在尝试使用一个嵌套的模板结构,其中包含一个静态变量。我已将我的代码缩减为这个准系统示例。

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;

我找不到语法到底有什么问题。

最佳答案

您需要在定义中删除模板。符号B 不依赖,至少在标准意义上是这样;它是一个本地声明的名称,因为它是在模板 A。见§14.6:

Three kinds of names can be used within a template definition:

— The name of the template itself, and names declared within the template itself.

— Names dependent on a template-parameter (14.6.2).

— Names from scopes which are visible within the template definition.

关于c++ - 使用嵌套模板时出现 "template definition of non-template"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24547961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com