给定以下代码:
void f()
{
class A
{
template <typename T>
void g() {}
};
}
g++ 4.4(以及 g++-4.6 -std=gnu++0x
)抱怨:“本地类中成员模板的声明无效”。
显然本地类不允许有模板成员。这个限制的目的是什么?它会在 C++0x 中被删除吗?
注意:如果我让本地类本身成为一个模板,而不是给它一个模板成员:
void f()
{
template <typename T>
class A
{
void g() {}
};
}
我得到“错误:模板声明不能出现在块范围内”。