GCCは、ローカルクラスを使用してテンプレートをインスタンス化することを承認していないようです。
template <typename T>
void f(T);
void g()
{
struct s {};
f(s()); // error: no matching function for call to 'f(g()::s)'
}
VCは文句を言いません。
それはどのように行われるべきですか?
GCCは、ローカルクラスを使用してテンプレートをインスタンス化することを承認していないようです。
template <typename T>
void f(T);
void g()
{
struct s {};
f(s()); // error: no matching function for call to 'f(g()::s)'
}
VCは文句を言いません。
それはどのように行われるべきですか?
C ++ 03ではそれを行うことはできませんが、C++0xはその制限を解除します。
C ++ 03、§14.3.1/ 2:
ローカル型、リンケージのない型、名前のない型、またはこれらの型のいずれかから複合された型は、テンプレート型パラメータのテンプレート引数として使用してはなりません。