关于右值引用:非常量右值引用只能绑定到非常量右值

zhousitiaoda 2014-10-13 08:53:44
int && i =10;
这样说来10是个右值而不是常量右值了?
...全文
232 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousitiaoda 2014-10-14
  • 打赏
  • 举报
回复
3Q。。。多谢二位解惑。
mujiok2003 2014-10-13
  • 打赏
  • 举报
回复
constness是描述对象的, rvalueness是描述表达式的, 两者是正交的。 对象10是字面常量, 表达式10是右值。
FrankHB1989 2014-10-13
  • 打赏
  • 举报
回复
常量是指什么,const么。 10本来就是个int类型的prvalue。非类/数组类型的prvalue的类型无所谓cv-qualified,这个和C兼容。如果是个class倒是可以有const类型的prvalue。关于数组类型倒是有个CWG defect:http://wg21.cmeerw.net/cwg/issue1059 。 WG21/N3936 3.10 4 Unless otherwise indicated (5.2.2), prvalues shall always have complete types or the void type; in addition to these types, glvalues can also have incomplete types. [ Note: class and array prvalues can have cv-qualified types; other prvalues always have cv-unqualified types. See Clause 5. —end note ] Note 56) In C++ class prvalues can have cv-qualified types (because they are objects). This differs from ISO C, in which non-lvalues never have cv-qualified types.

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧