c++ - 定义嵌套模板的合法语法是什么?

标签 c++ templates

我有以下嵌套模板

class A {
    template <typename T> class B {
        template <typename U> void foo(U arg);
    };
};

我正在尝试像这样定义嵌套模板:

template <typename T, typename U> void
A::B<T>::foo(U arg) {...}

但是我收到declaration is incompatible with function template错误。这样做的合法语法是什么?

最佳答案

您需要分隔模板声明:

template <typename T>
template <typename U>
void
A::B<T>::foo(U arg) { … }

关于c++ - 定义嵌套模板的合法语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470163/

相关文章:

c++ - 将字节写入文件

c++ - Distinc 派生类 C++

c++ - C++11 auto 关键字是否针对所有情况进行了准确定义?或者 : how does auto know what I intend?

c++ - 在 lambda 表达式中使用模板类方法时出现 GCC 编译错误

模板的c++模板

c++ - 将指针的类型作为模板参数传递

c++ - 使用邻接矩阵进行图形着色

c++ - C++中,为什么返回不同对象私有(private)变量的指针会导致段错误?

Cgicc.h 中的 C++ 类定义

c++ - 简单模板代码中的错误