std :: nullptr_t类型的prvalue

时间:2014-07-31 13:39:35

标签: c++ rvalue

第4.10 / 1节N3797说:

  

空指针常量是一个整数文字(2.14.2),其值为零   或者类型为std :: nullptr_t的prvalue。

我认为nullptrprvalue类型的std::nullptr_t。你会得到更多这样的prvalue的例子吗?

1 个答案:

答案 0 :(得分:3)

与任何类型一样,有多种方法可以获得std::nullptr_t类型的prvalue:

  • 从适当的表达式中投射:static_cast<std::nullptr_t>(0)
  • 临时构造函数调用:std::nullptr_t{}
  • 调用返回std::nullptr_tstd::nullptr_t f() { return {}; } f()
  • 的函数
  • 致电lambda返回std::nullptr_t[]() -> std::nullptr_t { return {}; }()
  • 逗号表达式,右侧是std::nullptr_t prvalue:("hello", nullptr)
  • 条件表达式,其中一方具有类型std::nullptr_t,另一方具有不同的值类别或者是throw-expression:false ? throw "oops" : nullptrfalse ? std::move(nullptr) : nullptr

因为std::nullptr_t没有参与大多数运营商,所以这是一个相当令人疲惫的清单;类型为std::nullptr_t的大多数其他表达式都会产生glvalues。