【发布时间】:2010-07-03 21:18:02
【问题描述】:
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++ templates gcc 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)'
}
VC 没有抱怨。
应该怎么做?
【问题讨论】:
标签: c++ templates gcc local-class
在 C++03 中无法做到,但 C++0x 将 lift 限制。
C++03,§14.3.1/2:
本地类型、无链接类型、未命名类型或由这些类型中的任何一种复合而成的类型不得用作模板类型参数的模板参数。
【讨论】: