我正在尝试我的第一个模板。以下代码编译:
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令牌
答案 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 : '> >'
{};