此代码无法编译(使用 gcc 9.3)...
int main() {
char bar = nullptr; //error: cannot convert ‘std::nullptr_t’ to ‘char’ in initialization
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码确实可以编译...
#include <array>
int main() {
std::array<char, 1> foo = {nullptr}; // foo[0] == char(0), why?
}
Run Code Online (Sandbox Code Playgroud)
为什么会有区别?
为什么 char 可以在 std::array 中初始化为 nullptr
它不能。所示程序在 C++ 中格式错误。
当一个格式错误的程序编译时,通常有两种可能性:
它是一种语言扩展。
这是一个编译器错误。
在这种情况下,我认为是后者。该错误在 GCC 9 中重现,但似乎已在 GCC 10 中修复。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |