Lai*_*ith 6 c++ rvalue nullptr language-lawyer
虽然看着实行nullptr 这里,有什么了我的注意的是,nullptr就是rvalue这意味着我们可以做这样的事情
std::nullptr_t&& nullref = nullptr;
Run Code Online (Sandbox Code Playgroud)
但怎么可能nullptr是rvalue因为实现是这样的
const class {...} nullptr = {};
Run Code Online (Sandbox Code Playgroud)
这是核心功能吗?我错过了什么?
Lig*_*ica 16
实施与此无关.
nullptr定义关键字以生成rvalue表达式,这就是它的结尾.
[C++14: 2.14.7/1]:指针文字是关键字nullptr.它是一种类型的prvaluestd::nullptr_t.[注意:std::nullptr_t是一种不同的类型,既不是指针类型也不是指向成员类型的指针; 相反,这种类型的prvalue是一个空指针常量,可以转换为空指针值或null成员指针值.见4.10和4.11. - 尾注]
我同意你不能在用户空间中重新实现它的这个标准,但是对于每个其他关键字也是如此.
如果你很好奇,表达式只包含关键字true,false也是rvalues.
[C++14: 2.14.6/1]:布尔文字是关键字false和true.这样的文字是prvalues并且有类型bool.