模板定义语法
template definitions syntax
简短的问题,这些定义是否相同?
1.
template<class T1>
template<class T2>
void function(T1 *a, T2*b);
2.
template<class T1,class T2>
void function(T1 *a, T2*b);
不,它们不一样。第一种情况不会编译为自由函数 (live example)。通常你会做第一种情况,当你有一个模板 class 并且你有一个函数接受另一个模板参数
template <typename T1>
class Foo
{
public:
template<typename T2>
void function(T1 *a, T2*b);
};
template<class T1>
template<class T2>
void Foo<T1>::function(T1 *a, T2*b);
你的第二个例子作为一个有两个模板参数的函数就很好。
简短的问题,这些定义是否相同?
1.
template<class T1>
template<class T2>
void function(T1 *a, T2*b);
2.
template<class T1,class T2>
void function(T1 *a, T2*b);
不,它们不一样。第一种情况不会编译为自由函数 (live example)。通常你会做第一种情况,当你有一个模板 class 并且你有一个函数接受另一个模板参数
template <typename T1>
class Foo
{
public:
template<typename T2>
void function(T1 *a, T2*b);
};
template<class T1>
template<class T2>
void Foo<T1>::function(T1 *a, T2*b);
你的第二个例子作为一个有两个模板参数的函数就很好。