模板参数的默认值

template parameters default value

本文关键字:默认值 参数      更新时间:2023-10-16

我正在尝试我的第一个模板。编译以下代码:

template<class T,class C=int> class MyClass
{};

但不是这个:

#include <vector>
using namespace std;
template<class T,class C=vector<T>> class MyClass
{};

但是我看到标准的vector类模板是这样声明的:

template < class T, class Alloc=allocator<T> > class vector
{};
编译器抛出的错误有:

*error: spurious '>>',使用'>'终止模板实参列表
错误:在模板参数列表中定义了'class MyClass'
*错误:在type name中声明两个或多个数据类型
*错误:预期'>' before ';' token

http://coliru.stacked-crooked.com/a/f93734d989e10446

不,它有效。您只是忘记了std名称空间。

代码为:

#include <vector>
using namespace std;
template<class T,class C=vector<T>> class MyClass
{};

但我应该写:

#include <vector>
template<class T,class C=std::vector<T> > class MyClass//with space between right angle brackets  : '> >'
{};