为什么可以在std :: array中将char初始化为nullptr,而不能将其初始化为null?

杰克·施密特(Jake Schmidt)

此代码无法编译(使用gcc 9.3)...

int main() {
    char bar = nullptr; //error: cannot convert ‘std::nullptr_t’ to ‘char’ in initialization
}


但是这段代码确实可以编译...

#include <array>
int main() {
    std::array<char, 1> foo = {nullptr}; // foo[0] == char(0), why?
}


为什么有区别?

埃雷里卡

为什么可以在std :: array中将char初始化为nullptr

不可以 所示程序是C ++格式的。

格式错误的程序编译时,通常有两种可能性:

  1. 这是语言扩展。

  2. 这是一个编译器错误。

在这种情况下,我认为是后者。该错误在GCC 9中重现,但似乎已在GCC 10中修复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么可以将char指针变量初始化为字符串,但不能将int指针变量初始化为整数数组?

PHP为什么不能将静态变量初始化为time()?

为什么不能将Worksheets对象变量初始化为Worksheets集合?

为什么malloc在gcc中将值初始化为0?

为什么在Java中将超类初始化为子类?

如果初始化为 null,为什么我不能获得所有 ObjectCreationExpressionSyntax?

SDL#:为什么将IntPtr初始化为null?

为什么我们不能将2D整数数组初始化为指针?

是否可以将C指针初始化为NULL?

非初始化和初始化为null有什么区别?

编译器生成的默认构造函数是否将std :: array中的指针初始化为nullptr?

当我将其初始化为-1时,为什么数组会被填充为零

为什么在Scala Long中不能像Integer那样初始化为空啸叫

为什么在循环中将j初始化为0而不是其递增值?

为什么局部变量初始化为零

为什么将指针成员初始化为非零?

为什么将HashSet <>(0)初始化为零?

为什么纯虚函数初始化为0?

为什么逻辑回归的权重参数初始化为零?

为什么std :: string为零初始化为不确定的值

为什么null的React组件状态初始化为`never`类型?

为什么JAVA 10中的var无法初始化为null?

为什么将属性初始化为null而不是配置中的空列表?

为什么即使对象显式初始化为 null,空检查也会失败

在javascript中将字符串变量初始化为null或空字符串有什么区别?首选

为什么可以将const Class&初始化为其自身?

为什么不能使用嵌套的初始化程序列表初始化std :: array <std :: pair <int,int>,3>,但是std :: vector <std :: pair <int,int >>可以初始化?

itemgetter如何工作?当我们将其初始化为密钥时会发生什么

在Chisel中将捆绑寄存器初始化为全1的最佳方法是什么?