我想我的第一個模板。下面的代碼編譯:模板參數默認值
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