模板参数默认值

时间:2015-07-11 23:46:55

标签: c++ templates

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

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

但不是这样:

#include <vector>

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

然而,我看到标准的矢量类模板声明如下:

template < class T, class Alloc=allocator<T> > class vector
{};

编译器抛出的错误是:

* error:spurious'&gt;&gt;',使用'&gt;'终止模板参数列表
*错误:模板参数列表中“类MyClass”的定义
*错误:'类型名'的声明中有两种或更多数据类型 *错误:预期'&gt;'在';'之前令牌
*错误:在';'之前预期的unqualified-id令牌

2 个答案:

答案 0 :(得分:2)

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

不,它有效。你刚忘了std命名空间。

答案 1 :(得分:1)

代码是:

#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  : '> >'
{};