关于decltype的标准语义,该如何解决
关于decltype的标准语义std::vectorint v...const decltype(v.front())& item v.front()上面的代码
关于decltype的标准语义
std::vector<int> v;
...
const decltype(v.front())& item = v.front();
上面的代码在vc下面编译很好,但在gcc(最新版本)下却编译不过(去掉const才行),请问标准是什么?
到底是谁不标准?
[解决办法]
使用const_cast<>()
[解决办法]
C/C++ codeint a = 0;int & const b = a; // error: 'const' qualifiers cannot be applied to 'int&'
[解决办法]
[解决办法]
那我建议你老老实实使用C++2003标准语法。
C++ boost本来已是怪兽,你这样做,是放出了C++2011恶魔。
很简单的事情,你偏要去复杂化。
用最简单的方法解决,才是艺术化。
[解决办法]
最后得到是不是const的 取决于decltype(client_vec.front()) 中的client_vec是不是const的。
因此这并不影响你写这个lambda。所以没必要纠结这个问题。
如果实在弃不了const-ref的情结。还可以
const std::remove_reference<decltype(v.front())>::type &
但是你说
>>可是我的代码必须支持vc2010!
我觉得就凭这句,可以结束该贴了
[解决办法]
vs2010对decltype支持有点问题
我经常用到编译器崩溃。。。
出问题还是换句话写吧