「C++ Templates、The Complete Guide」の第5章を読んでいます。「テンプレートテンプレート」テンプレートの概念を見てきました。テンプレートクラスでテンプレートテンプレートin C++ 11エラー
、私はこのように私のテンプレートを宣言した:
template <typename TipoClave, typename TipoDato,
template <class Elem, class Alloc = allocator<Elem>> class Lista = vector>
そして、これは動作します。私の問題は、デフォルト以外の別のコンテナを使用しようとするときに発生します。
次のように私のクラスがある:私はこのようなメインプログラムからそれを使用しようとすると、
class Tabla
{
public:
struct Celda {
TipoClave clave;
TipoDato dato;
};
Tabla(unsigned tam)
{
t.resize(tam);
}
///< Some other functions
private:
typedef Lista<Celda> ListaDatos;
Lista<ListaDatos> t;
};
そして:
int main (void)
{
Tabla<string,Alumno,array> tabla(200);
///< Some stuff
return 0;
}
しかし、この行Tabla<string,Alumno,array> tabla(200);
がコンパイルされません、私を取得次のようなエラーが表示されます:
test_tabla_t.cpp: In function ‘int main()’: test_tabla_t.cpp:20:27: error: type/value mismatch at argument 3 in template parameter list for ‘template class Lista> class Tabla’ Tabla tabla(200);
私はTabla<string,Alumno,vector> tabla(200);
を使用しようとしました。それは動作するので、私はこのエラーを解決する方法を知らない。