首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个是C++11的bug或是编译器的bug仍是什么规则吗?自动函数返回值无法找到类成员变量

2013-09-09 
这个是C++11的bug或是编译器的bug还是什么规则吗?自动函数返回值无法找到类成员变量测试编译器:vs2012代码

这个是C++11的bug或是编译器的bug还是什么规则吗?自动函数返回值无法找到类成员变量
测试编译器:vs2012
代码:
class tester
{
public:
template<class T>
auto auto_ret(T val) decltype(val*_mpos)
{
return val*_mpos;
}
private:
int _mpos;
};

编译器提示找不到_mpos
但是如果把_mpos放到了auto_ret函数前却可以通过编译
[解决办法]
标准规定的,decltype里的东西必须在其之前声明,即使是类中也一样
参见C++11标准 5.1.1第三条

类里面在声明成员时,只有前面的才是可见的,定义成员函数时才是所有成员都可见

热点排行