Cro*_*mon 3 c++ templates visual-c++
我正在使用 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
}
Run Code Online (Sandbox Code Playgroud)
这会产生一整套错误(主要来自后续代码):
而且它还会影响后续代码,之后的所有行都会出现大量语法错误。
我没有看到什么或者这可能是 Visual Studio 的问题吗?
问题/解决方案
\n\n您需要template
在这种情况下使用关键字来告诉编译器这Bar
确实是一个模板,如下面的代码片段所示:
template<typename T, typename R, typename... S>\ntypename Foo<R, S...>::template Bar<T> fooBar() { // <--- LINE 33\n ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n但为什么?
\n\n每当模板名称是依赖模板名称template
时,我们都需要使用关键字,如果没有它,编译器将把in视为非模板,这是没有意义的;它会出错。Bar
Foo<R, S...>::Bar
进一步阅读:
\n\n\n 归档时间: |
|
查看次数: |
963 次 |
最近记录: |