有关C++11中decltype的一点问题
错误:intcj=0;constdecltype((cj))z=42;正确:constintcj=0;decltype((cj))z=42;我知道把42赋值给Z必须是常量...
错误:
int cj=0;
const decltype((cj)) z=42;
正确:
const int cj=0;
decltype((cj)) z=42;
我知道把42 赋值给Z必须是常量引用,可是我感觉第一种也可以额。。。求解答 展开
int cj=0;
const decltype((cj)) z=42;
正确:
const int cj=0;
decltype((cj)) z=42;
我知道把42 赋值给Z必须是常量引用,可是我感觉第一种也可以额。。。求解答 展开
1个回答
展开全部
这个:
int cj=0;
const decltype((cj)) z=42;
肯定是错的。 根据c++0x关于decltype的说明:【Note that if the name of an object is parenthesised, it becomes an lvalue expression, thus decltype(arg) and decltype((arg)) are often different types.】
decltype((cj))就变成了 decltype( int &cj = 0); 这个就错了:常量的reference只能是const限定的。虽然decltype前面的const是可以。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询