【问题标题】:Can an array or function lvalue be converted to an rvalue?可以将数组或函数左值转换为右值吗?
【发布时间】:2011-09-29 20:12:48
【问题描述】:

根据 C++ 标准 2003:

An lvalue (3.10) of a non-function, non-array type T can be converted to an rvalue.

数组和函数不能转右值是什么意思?

【问题讨论】:

  • 我什至不知道函数或数组类型的左值会是什么样子,假设它甚至存在的话。
  • @Neil:数组类型的左值只是一个指定数组对象的表达式。给定int arr[20];,表达式arr 是一个数组左值。 (它在大多数(但不是全部)上下文中转换为指针。)
  • @KeithThompson CatPlusPlus 的回答说明了一切,谢谢。

标签: c++ rvalue


【解决方案1】:

后面的子句(4.2、4.3)涵盖了函数和数组类型。

“N T 数组”或“T 未知边界数组”类型的左值或右值可以转换为右值 类型为“指向 T 的指针”。结果是指向数组第一个元素的指针。

(...)

函数类型 T 的左值可以转换为“指向 T 的指针”类型的右值。结果是一个指向 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多