【问题标题】:Assigning value to integer literal为整数文字赋值
【发布时间】:2021-11-21 23:57:00
【问题描述】:

当一个纯右值作为一个操作数的操作数出现时,该操作数需要一个左值,temporary materialization conversion 被应用于将表达式转换为一个 xvalue。

来源:https://eel.is/c++draft/basic.lval#7

为什么5 = 6 格式不正确?它是否应该不执行临时实现转换,并创建一个可分配的临时?

【问题讨论】:

  • 整数文字是一个未命名的常量。常量只能是右值,未命名的值只能是右值。所以 5 不是一个合适的水平。它不能转换为左值。

标签: c++ language-lawyer


【解决方案1】:

5 = 6 被法定货币非法。也就是说,这是非法的,因为[expr.ass]/1 explicitly says so:

所有[赋值运算符]都需要一个可修改的左值作为左操作数

5 不是可修改的左值。因此,违反了该规则并且代码格式不正确。请注意,它通常不期望“glvalue”;它需要一个“可修改的左值”特别是

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2023-03-25
    • 2017-12-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多