空指针常量转换为右值
Null pointer constant conversion to a prvalue
空指针常量转换由以下规则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)
,它不是一个空指针值。
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 为什么我收到"从常量指针到指针的转换无效?
- 从'size_t'转换为"常量双倍",可能会丢失数据
- 在编译时将常量字符* 转换为常量 char_type*
- 为什么下面带有非常量转换函数的代码没有歧义?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 字符串强制转换为常量字符*
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 将错误作为从字符串常量到"char*"的已弃用转换 [-Wwrite-strings]
- 将编译时常量向量转换为堆分配版本
- 在<uint8_t> <char> c++ 中将常量向量转换为常量向量
- 在不同类型之间转换常量指针
- 转换(常量字符*)变量出错
- C++大小写中的类型转换常量字符串
- 转换常量无符号字符无效
- 转换常量表达式定义的说明
- c++ 11强制转换常量迭代器,指向shared_ptr对象的容器
- 条件运算符+上转换+常量引用
- c++限定转换-常量和模板