【发布时间】:2020-08-21 12:55:10
【问题描述】:
如果我有一个以 T 类型为模板的类 A,并且该类有一个以 U 类型为模板的方法 Foo
template <class T>
class A
{
public:
template <class U>
void Foo();
};
要在类之外定义该函数,我需要两个这样的模板语句
template <class T>
template <class U>
void A<T>::Foo() {} // this compiles
以下不编译
template <class T, class U>
void A<T>::Foo() {} // this does not compile
有错误
prog.cpp:10:6: error: no declaration matches ‘void A<T>::Foo()’
void A<T>::Foo() {}
^~~~
prog.cpp:6:7: note: candidate is: ‘template<class T> template<class U> void A<T>::Foo()’
void Foo();
^~~
prog.cpp:2:7: note: ‘class A<T>’ defined here
class A
^
有没有更简洁/紧凑的方式来像上面一样在单个语句中定义两种模板类型?
【问题讨论】:
-
我担心没有其他“紧凑”的方式