【发布时间】:2014-07-31 13:39:34
【问题描述】:
第 4.10/1 节 N3797 说:
空指针常量是一个值为零的整数文字 (2.14.2) 或 std::nullptr_t 类型的纯右值。
我认为nullptr 是prvalue 类型的std::nullptr_t。你能得到更多这样的prvalue的例子吗?
【问题讨论】:
第 4.10/1 节 N3797 说:
空指针常量是一个值为零的整数文字 (2.14.2) 或 std::nullptr_t 类型的纯右值。
我认为nullptr 是prvalue 类型的std::nullptr_t。你能得到更多这样的prvalue的例子吗?
【问题讨论】:
与任何类型一样,有多种方法可以获得std::nullptr_t 类型的纯右值:
static_cast<std::nullptr_t>(0)
std::nullptr_t{}
std::nullptr_t的函数:std::nullptr_t f() { return {}; } f()
std::nullptr_t的lambda:[]() -> std::nullptr_t { return {}; }()
std::nullptr_t prvalue:("hello", nullptr)
std::nullptr_t,而另一侧的值类别不同,或者是一个抛出表达式:false ? throw "oops" : nullptr, false ? std::move(nullptr) : nullptr
因为std::nullptr_t 不参与大多数运营商,所以这是一个相当详尽的列表;大多数其他类型为 std::nullptr_t 的表达式将产生泛泛值。
【讨论】: