给定以下代码:
void f()
{
class A
{
template <typename T>
void g() {}
};
}
g++ 4.4(以及 g++-4.6 -std = gnu ++0x )抱怨:“局部类中的成员模板声明无效。”
显然,不允许局部类具有模板成员。这个限制的目的是什么?它会在C++0x中被移除吗?
注意:如果我使局部类本身成为模板,而不是给它一个模板成员:
<code>void f()
{
template <typename T>
class A
{
void g() {}
};
}
</code>
我收到了"error: a template declaration cannot appear at block scope" 的错误提示。