gpt4 book ai didi

c++ - 嵌套模板类语法错误 (MSVC)

转载 作者:太空狗 更新时间:2023-10-29 20:59:45 27 4
gpt4 key购买 nike

我正在使用 Visual Studio 2013,并且在返回模板外部类内的嵌套模板类的函数时遇到了一些问题。我做了一个最小的例子,真正的例子涉及更多的代码:

template<typename R, typename... S>
class Foo
{
public:
template<typename T>
class Bar
{

};
};

template<typename T, typename R, typename... S>
typename Foo<R, S...>::Bar<T> fooBar() { // <--- LINE 33

}

这会产生一整套错误(主要来自后续代码):

  • 33: error C2988: 无法识别的模板声明/定义
  • 33: error C2059: 语法错误:'<'

而且它还会影响后续代码,之后的所有行都会出现大量语法错误。

我是不是没有看到什么,或者这可能是 Visual Studio 的问题?

最佳答案

问题/解决方案

您需要使用关键字 template在这种情况下告诉编译器 Bar确实是一个模板,如下面的代码片段所示:

template<typename T, typename R, typename... S>
typename Foo<R, S...>::template Bar<T> fooBar() { // <--- LINE 33
...
}

但是为什么?

我们需要使用 template每当模板名称 是一个依赖模板名称 时的关键字,没有它编译器将处理BarFoo<R, S...>::Bar作为一个非模板,这没有意义;它出错了。

进一步阅读:

关于c++ - 嵌套模板类语法错误 (MSVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895090/

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