次のサンプルコードで何が問題になっていますか? GCCではコンパイルされません。どうして?C++テンプレートのネストされた名前指定子で私を助けることができますか?
template <class TA>
struct A
{
template <class TAB> struct B;
};
template <class TC>
struct C {};
template <class TD>
struct D
{
template <class TTD> class T {};
};
template<class TA>
template<class TBA>
struct A<TA>::B : C<typename D<TA>::T<TBA> >
{
int foo;
};
GCC 4.3.4出力:明示的にテンプレート引数で修飾するテンプレート名については
error: template argument 1 is invalid
error: expected `{' before ‘>’ token
error: expected unqualified-id before ‘>’ token
を読んでみてください。 –
私はいくつかの場所で 'typename'がないと思います。しかし、集中するのも疲れました。私は他の誰かにそれを残すでしょう。しかし、私はあなたの質問のいくつかの部分を言い換えるべきだと思います。今から1年後に誰かが質問と回答を見つけたとします。あなたの欲求不満は長くなくなります。滞在する言葉。 – 0xC0000022L
いい質問...このような複雑なタイプのテンプレートを見たことはありません! – iammilind