专门化模板参数的嵌套模板时出现 C++ 语法错误 [duplicate]

c++ syntax error when specializing nested template of a template parameter [duplicate]

提问人:lequinne 提问时间:4/14/2023 更新时间:4/14/2023 访问量:22

问:

这是我想做的:

template<typename T, int I>
class A {
public:
    using CA = T::C<I>;
};

class B {
public:
    template<int I>
    struct C {};
};

int main()
{
    A<B, 1> a;
    return 0;
};

然而,莫名其妙地(对我来说),这是一个语法错误——在“using UA =”行的“<”之前“缺少';”。尝试了很多变化,但无法弄清楚缺少什么。谢谢

使用指令嵌 套类型的 C++ 模板

评论

2赞 user4581301 4/14/2023
更完整的诊断信息是否有帮助?
1赞 Drew Dormann 4/14/2023
我必须在哪里以及为什么必须放置“template”和“typename”关键字?
0赞 lequinne 4/14/2023
@user4581301 感谢您的资源。使用 UA = T::template U<I>;做到了。知道它一定是类似的东西,但不知何故无法弄清楚。

答:

0赞 lequinne 4/14/2023 #1

更正的语法:

使用 UA = T::template U;

看起来这实际上已经非常详细地回答了之前在我必须在哪里以及为什么必须放置“模板”和“typename”关键字?

谢谢大家。