C++ std::nullptr\t类型的prvalue

C++ std::nullptr\t类型的prvalue,c++,rvalue,C++,Rvalue,N3797第4.10/1节规定: 空指针常量是值为零的整数文本(2.14.2) 或std::nullptr\t类型的prvalue 我认为nullptr是prvalue类型的std::nullptr\u t。您是否可以获得更多此类prvalue的示例?与任何类型一样,有多种方法可以获得std::nullptr\t类型的prvalue: 从适当的表达式强制转换:static\u cast(0) 临时构造函数调用:std::nullptr\u t{} 调用返回函数的std::nullptr\u t

N3797第4.10/1节规定:

空指针常量是值为零的整数文本(2.14.2) 或std::nullptr\t类型的prvalue


我认为
nullptr
prvalue
类型的
std::nullptr\u t
。您是否可以获得更多此类
prvalue
的示例?

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

  • 从适当的表达式强制转换:
    static\u cast(0)
  • 临时构造函数调用:
    std::nullptr\u t{}
  • 调用返回函数的
    std::nullptr\u t
    std::nullptr\u t f(){return{};}f()
  • 调用lambda返回
    std::nullptr\u t
    []()->std::nullptr\u t{return{};}()
  • 一种逗号表达式,其中右侧是
    std::nullptr\u t
    prvalue:
    (“hello”,nullptr)
  • 一种条件表达式,其中一侧具有类型
    std::nullptr\u t
    ,另一侧具有不同的值类别,或者是抛出表达式:
    false?抛出“oops”:nullptr
    false?std::move(nullptr):nullptr
由于
std::nullptr\u t
不参与大多数操作员,因此这是一个合理的消耗列表;大多数其他类型为
std::nullptr\u t
的表达式将生成gl值