我想我的第一个模板。下面的代码编译:模板参数默认值
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'>>',使用'>'终止模板参数列表
*错误:模板参数列表中的'class MyClass'的定义
*错误:'类型名称'声明中的两个或多个数据类型
* error'expected'>'before';'令牌
*错误:预计在''之前的非限定ID';'令牌
也许你会得到使用了编译器提供更好的错误消息。 *错误:连续的右括号之间需要空格(使用'>'')*我也假设你知道这个,但是*错误:没有名为'vector'的模板;你的意思是'std :: vector'?* – chris
你可能想在'vector'前面添加'std ::'。 – theV0ID
如果你将它编译为C++ 11,你应该可以使用>>没有空格。 – PSkocik