からテンプレートを構成する私は、次のコードOM試してみましたが、それはcopmileしないtemplate<int, int>
テンプレートの構築:テンプレート
からtemplate<int>
を構成する方法です:
#include <iostream>
template<int N, int M>
struct A { enum E { n = N, m = M }; };
template<template<int> class C>
struct B : public C<8> { };
int main(int argc, const char *argv[])
{
typedef B< A<4> > T;
T b;
std::cout << T::n << std::endl;
std::cout << T::m << std::endl;
return 0;
}
エラー:
test3.cxx: In function ‘int main(int, const char**)’:
test3.cxx:10:23: error: wrong number of template arguments (1, should be 2)
test3.cxx:3:12: error: provided for ‘template<int N, int M> struct A’
test3.cxx:10:25: error: template argument 1 is invalid
test3.cxx:10:28: error: invalid type in declaration before ‘;’ token
test3.cxx:13:22: error: ‘T’ is not a class or namespace
test3.cxx:14:22: error: ‘T’ is not a class or namespace
あなたがC++ 11を使用しています:これは、元のテンプレートに委譲することを右のアリティで新しいテンプレートを作成することです達成する
一つの方法は? –
いいえ、違いはありますか? – Allan
おそらく。テンプレートのエイリアスは、処理をスムーズにするために使用できますが、C++ 11にのみ存在します。 –