3

GCCは、ローカルクラスを使用してテンプレートをインスタンス化することを承認していないようです。

template <typename T>
void f(T);

void g()
{
    struct s {};

    f(s()); // error: no matching function for call to 'f(g()::s)'
}

VCは文句を言いません。

それはどのように行われるべきですか?

4

1 に答える 1

12

C ++ 03ではそれを行うことはできませんが、C++0xはその制限を解除します

C ++ 03、§14.3.1/ 2

ローカル型、リンケージのない型、名前のない型、またはこれらの型のいずれかから複合された型は、テンプレート型パラメータのテンプレート引数として使用してはなりません。

于 2010-07-03T21:18:57.247 に答える