nullptr rvalue怎么样?

Lai*_*ith 6 c++ rvalue nullptr language-lawyer

虽然看着实行nullptr 这里,有什么了我的注意的是,nullptr就是rvalue这意味着我们可以做这样的事情

std::nullptr_t&& nullref = nullptr;
Run Code Online (Sandbox Code Playgroud)

但怎么可能nullptrrvalue因为实现是这样的

const class {...} nullptr = {};
Run Code Online (Sandbox Code Playgroud)

这是核心功能吗?我错过了什么?

Lig*_*ica 16

实施与此无关.

nullptr定义关键字以生成rvalue表达式,这就是它的结尾.

[C++14: 2.14.7/1]:指针文字是关键字nullptr.它是一种类型的prvalue std::nullptr_t.[注意: std::nullptr_t是一种不同的类型,既不是指针类型也不是指向成员类型的指针; 相反,这种类型的prvalue是一个空指针常量,可以转换为空指针值或null成员指针值.见4.10和4.11. - 尾注]

我同意你不能在用户空间中重新实现它的这个标准,但是对于每个其他关键字也是如此.

如果你很好奇,表达式只包含关键字true,false也是rvalues.

[C++14: 2.14.6/1]:布尔文字是关键字falsetrue.这样的文字是prvalues并且有类型bool.