空指针常量转换为右值

Null pointer constant conversion to a prvalue

本文关键字:转换 常量 空指针      更新时间:2023-10-16

空指针常量转换由以下规则sec.4.10/1 N3797:

整型空指针常量可以转换为右值类型std::nullptr_t。[注:结果的右值不是空值。指针的值。端注)

我认为下面是这种转换的一个例子:

static_cast<std::nullptr_t>(0);

但这似乎不是真的,因为

#include <iostream>
#include <iostream>
using namespace std;
int main()
{
    void *p = static_cast<std::nullptr_t>(0);
    cout << p; //0- Why? It is not a null pointer value
}
演示

表达式p 空指针。std::nullptr_t类型的右值可以转换为任意指针。

是初始化表达式static_cast<std::nullptr_t>(0),它不是一个空指针值。