HC4*_*ica 46 c++ templates local-class c++11
给出以下代码:
void f()
{
class A
{
template <typename T>
void g() {}
};
}
Run Code Online (Sandbox Code Playgroud)
g ++ 4.4(以及 g++-4.6 -std=gnu++0x
)抱怨:"本地类中成员模板的声明无效".
显然,本地类不允许有模板成员.这种限制的目的是什么?它会在C++ 0x中删除吗?
注意:如果我将本地类本身设为模板,而不是给它一个模板成员:
void f()
{
template <typename T>
class A
{
void g() {}
};
}
Run Code Online (Sandbox Code Playgroud)
我得到"错误:模板声明不能出现在块范围内".
eci*_*eci 12
这个限制的目的是什么?只是一个猜测,但是:
有趣的事实:尝试在函数中使用函数中的本地类作为函数中声明的(c ++ 0x)-lambda函数的返回类型:MSVC 2010:内部编译器错误^^.
归档时间: |
|
查看次数: |
10377 次 |
最近记录: |