「テンプレートのテンプレート」のコンセプトで少し混乱します。たとえば、これはコンパイルできますテンプレートクラスのテンプレートをインスタンス化する方法
template<typename X1>
class T1 {};
template<class X2, template<typename X> class T >
class TT {};
int _tmain(int argc, _TCHAR* argv[])
{
TT<int, T1> tt1; //compile ok
//TT<int, T1<int>> tt2; //compile error
return 0;
}
私はtt1
定義はtypeパラメータX2
ためint
を供給している、ことをここで混乱している、とテンプレート型パラメータT
ためT1
、これらは、それ自体が必要とするすべての罰金です...しかしT1
タイプX1
、これがなくても、C++コンパイラはどのようにコンパイルできますか?
'template class T' - ここで' X 'は赤いニシンです。 –
StoryTeller
@StoryTeller私は分かりません - 'T'はそれを指定するために型パラメータ' X'を必要とするテンプレートです、そうではありませんか? – athos
それは1つの議論を受け入れる。しかしそこには「X」は全く使われていません。 – StoryTeller