如何使用带有模板的本地类?

uj2*_*uj2 3 c++ gcc templates local-class

GCC似乎不赞成使用本地类实例化模板:

template <typename T>
void f(T);

void g()
{
    struct s {};

    f(s()); // error: no matching function for call to 'f(g()::s)'
}
Run Code Online (Sandbox Code Playgroud)

VC不抱怨.

应该怎么做?

Geo*_*che 12

在C++ 03中无法完成,但C++ 0x会提升该限制.

C++ 03,§14.3.1/ 2:

本地类型,没有链接的类型,未命名的类型或从这些类型中的任何类型复合的类型不应该用作模板类型参数的模板参数.