有关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必须是常量引用,可是我感觉第一种也可以额。。。求解答
展开
 我来答
splashchaos
2015-02-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3623万
展开全部

这个:

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是可以。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式