此代码无法编译(使用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 ++格式的。
格式错误的程序编译时,通常有两种可能性:
这是语言扩展。
这是一个编译器错误。
在这种情况下,我认为是后者。该错误在GCC 9中重现,但似乎已在GCC 10中修复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句