为什么在 c++11 中编译指示符初始化?

解释

如果我理解正确,文章https://en.cppreference.com/w/cpp/language/aggregate_initialization说从 c++20 开始允许指定初始化,在 c++11 中不允许。

那么为什么下面的代码是用 c++11 编译的呢?g++ -std=c++11 main.cpp

struct A { int x; int y; int z; };

int main(int argc, char const *argv[])
{
    A b{.x = 1, .z = 2};
    return 0;
}

我的第一个猜测是有某种 gcc 扩展支持它,但是 clang 也编译了这段代码(clang -std=c++11 main.cpp

天线

为什么在 c++11 中编译指示符初始化?

该程序在 C++11 中格式错误。C++ 语言不允许编译格式错误的程序。

我的第一个猜测是有某种 gcc 扩展支持它,但是 clang 也编译了这段代码

你的第一个猜测是好的,你可以简单地扩展它来得到答案:GCC 和 Clang 都扩展了该语言。Clang 经常尝试尽可能地与 GCC 兼容。无论好坏。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么可变参数函数不能“吃掉” C ++ 11中的列表初始化参数?

来自分类Dev

为什么在C ++ 11中允许第二次初始化

来自分类Dev

当parens初始化时,构造函数初始化列表中的C ++ 11大括号初始化为什么不起作用?

来自分类Dev

为什么在C ++ 11 / C ++ 14中针对自动和支撑初始化程序有特殊的类型推导规则?

来自分类Dev

为什么C ++ 11不支持指定的初始化列表作为C99?

来自分类Dev

为什么通过右值初始化非常量引用有效(在C ++ 11中)?

来自分类Dev

为什么“ override”在C ++ 11中结尾?

来自分类Dev

为什么在C ++ 11中需要decltype?

来自分类Dev

为什么C ++ 11不允许使用auto进行直接列表初始化

来自分类Dev

c++11:为什么静态 constexpr 的类内初始化不是定义?

来自分类Dev

为什么C ++ 11类内初始化程序不能使用括号?

来自分类Dev

为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

来自分类Dev

描述符重叠时,C11数组初始化的行为是什么?

来自分类Dev

在 C++11/17 中的类初始化和直接初始化中。有什么区别?

来自分类Dev

为什么在尝试使用C ++ 11样式初始化对象数组时编译器隐式删除构造函数

来自分类Dev

为什么C ++ 11中没有模板化typedef?

来自分类Dev

在C ++(98、11和14)中初始化静态数据成员的正确方法是什么?

来自分类Dev

什么时候应该使用括号()与Initializer {}语法来初始化C ++ 11中的对象?

来自分类Dev

为什么不能将C ++ 11大括号初始化与宏一起使用?

来自分类Dev

为什么C和C ++编译器将显式初始化和默认初始化的全局变量放在不同的段中?

来自分类Dev

为什么零初始化不是c ++中未初始化变量的默认值?有编译器选项可以强制执行吗?

来自分类Dev

为什么 C# 中的局部变量必须在 If 运算符条件中初始化和强制转换后进行初始化?

来自分类Dev

为什么add函数在c ++ 11线程中无效?

来自分类Dev

C ++零初始化-为什么此程序中的`b`未初始化,而`a`已初始化?

来自分类Dev

在C ++ 11中初始化结构的C ++ std :: array

来自分类Dev

派生类的C++初始化列表编译失败,为什么?

来自分类Dev

C ++类实例未初始化但没有编译错误,为什么

来自分类Dev

C++11/17 中 std::atomic 的间接和直接初始化。有什么区别?

来自分类Dev

C ++ 11中的延迟初始化顺序

Related 相关文章

  1. 1

    为什么可变参数函数不能“吃掉” C ++ 11中的列表初始化参数?

  2. 2

    为什么在C ++ 11中允许第二次初始化

  3. 3

    当parens初始化时,构造函数初始化列表中的C ++ 11大括号初始化为什么不起作用?

  4. 4

    为什么在C ++ 11 / C ++ 14中针对自动和支撑初始化程序有特殊的类型推导规则?

  5. 5

    为什么C ++ 11不支持指定的初始化列表作为C99?

  6. 6

    为什么通过右值初始化非常量引用有效(在C ++ 11中)?

  7. 7

    为什么“ override”在C ++ 11中结尾?

  8. 8

    为什么在C ++ 11中需要decltype?

  9. 9

    为什么C ++ 11不允许使用auto进行直接列表初始化

  10. 10

    c++11:为什么静态 constexpr 的类内初始化不是定义?

  11. 11

    为什么C ++ 11类内初始化程序不能使用括号?

  12. 12

    为什么显式声明的构造函数阻止使用C ++ 11初始化列表进行成员初始化?

  13. 13

    描述符重叠时,C11数组初始化的行为是什么?

  14. 14

    在 C++11/17 中的类初始化和直接初始化中。有什么区别?

  15. 15

    为什么在尝试使用C ++ 11样式初始化对象数组时编译器隐式删除构造函数

  16. 16

    为什么C ++ 11中没有模板化typedef?

  17. 17

    在C ++(98、11和14)中初始化静态数据成员的正确方法是什么?

  18. 18

    什么时候应该使用括号()与Initializer {}语法来初始化C ++ 11中的对象?

  19. 19

    为什么不能将C ++ 11大括号初始化与宏一起使用?

  20. 20

    为什么C和C ++编译器将显式初始化和默认初始化的全局变量放在不同的段中?

  21. 21

    为什么零初始化不是c ++中未初始化变量的默认值?有编译器选项可以强制执行吗?

  22. 22

    为什么 C# 中的局部变量必须在 If 运算符条件中初始化和强制转换后进行初始化?

  23. 23

    为什么add函数在c ++ 11线程中无效?

  24. 24

    C ++零初始化-为什么此程序中的`b`未初始化,而`a`已初始化?

  25. 25

    在C ++ 11中初始化结构的C ++ std :: array

  26. 26

    派生类的C++初始化列表编译失败,为什么?

  27. 27

    C ++类实例未初始化但没有编译错误,为什么

  28. 28

    C++11/17 中 std::atomic 的间接和直接初始化。有什么区别?

  29. 29

    C ++ 11中的延迟初始化顺序

热门标签

归档