带有默认初始化的Clang编译错误

meddle0106

考虑以下示例:

#include <iostream>
#include <type_traits>

struct A
{
  //A() = default; // does neither compile with, nor without this line
  //A(){};         // does compile with this line
  int someVal{ 123 };


  void foobar( int )
  {
  };
};


int main()
{
    const A a;
    std::cout << "isPOD = " << std::is_pod<A>::value << std::endl;
    std::cout << "a.someVal = " <<a.someVal << std::endl;
}

请参阅实时示例

这可以用g ++编译,但是不能用clang ++编译,请尝试使用以下命令: clang++ -std=c++11 -O0 main.cpp && ./a.out

从c编译错误:

main.cpp:19:13:错误:常量类型'const A'的对象的默认初始化需要用户提供的默认构造函数

我从“堆栈溢出问题”中学到了,非POD类将获得默认构造函数。这里甚至没有必要,因为变量具有c ++ 11样式的默认初始化

为什么不为c呢?为什么也A() = default;行不通?

秋季歌手

您自己引用了答案。在您链接的SO答案中,以下是标准引用的内容(准确地是6.8.6节):

如果程序要求对const限定类型T的对象进行默认初始化,则T必须是具有用户提供的默认构造函数的类类型

强调我的。线

A() = default;

显然没有提供构造函数,相反,它告诉编译器您不想提供构造函数,因此您的代码无法编译。但是,一旦通过取消注释提供了构造函数

 A(){}; 

它工作正常。因此,总而言之,clang显示的错误是按标准的,并且gcc的行为可能是一个错误。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中的UIViewController初始化引发编译错误

来自分类Dev

初始化LinkedList时出现编译错误

来自分类Dev

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

来自分类Dev

编译错误:(1)上的Dummy无法具有初始化程序。什么是虚拟变量?

来自分类Dev

使用包含闭包的类型初始化器初始化属性时出现编译错误

来自分类Dev

默认初始化(带有值初始化)参数包

来自分类Dev

cpp使用向量编译错误初始化二维数组

来自分类Dev

在初始化和声明指针变量时了解警告和编译错误

来自分类Dev

尝试使用initializer_list初始化类的成员值时编译错误

来自分类Dev

std :: thread初始化构造函数给出编译错误

来自分类Dev

C-初始化后填充结构-编译错误

来自分类Dev

Visual Studio C ++ 11g编译错误-初始化程序过多

来自分类Dev

如何避免Java编译错误“局部变量可能尚未初始化”?(是的,很认真!)

来自分类Dev

Inno Setup:初始化变量时,预期会出现编译错误分号(;)

来自分类Dev

std :: thread初始化构造函数给出了编译错误

来自分类Dev

Inno Setup:初始化变量时,预期会出现编译错误分号(;)

来自分类Dev

尝试初始化结构向量时出现编译错误

来自分类Dev

带有类继承的未初始化常量错误

来自分类Dev

带有 iDisplayLength 的错误初始化数据表

来自分类Dev

带有数据错误的超级初始化

来自分类Dev

带有CUP的JFlex编译错误

来自分类Dev

为什么编译器将带有方括号()的数组初始化标记为错误?

来自分类Dev

用Clang初始化结构的std :: array的编译器错误

来自分类Dev

Swift:在super.init初始化自我编译错误之前的方法调用中使用'self'

来自分类Dev

为什么会出现“无法访问的代码”和“变量未初始化”的编译错误?

来自分类Dev

编译包含指向模板函数的指针的初始化程序列表时,gcc错误,但clang错误

来自分类Dev

如果将错误的参数类型传递给结构初始化程序列表,编译器为什么不生成编译错误?

来自分类Dev

带有默认关键字的初始化列表的用法

来自分类Dev

带有默认哈希值的Ruby类初始化方法

Related 相关文章

  1. 1

    Swift中的UIViewController初始化引发编译错误

  2. 2

    初始化LinkedList时出现编译错误

  3. 3

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

  4. 4

    编译错误:(1)上的Dummy无法具有初始化程序。什么是虚拟变量?

  5. 5

    使用包含闭包的类型初始化器初始化属性时出现编译错误

  6. 6

    默认初始化(带有值初始化)参数包

  7. 7

    cpp使用向量编译错误初始化二维数组

  8. 8

    在初始化和声明指针变量时了解警告和编译错误

  9. 9

    尝试使用initializer_list初始化类的成员值时编译错误

  10. 10

    std :: thread初始化构造函数给出编译错误

  11. 11

    C-初始化后填充结构-编译错误

  12. 12

    Visual Studio C ++ 11g编译错误-初始化程序过多

  13. 13

    如何避免Java编译错误“局部变量可能尚未初始化”?(是的,很认真!)

  14. 14

    Inno Setup:初始化变量时,预期会出现编译错误分号(;)

  15. 15

    std :: thread初始化构造函数给出了编译错误

  16. 16

    Inno Setup:初始化变量时,预期会出现编译错误分号(;)

  17. 17

    尝试初始化结构向量时出现编译错误

  18. 18

    带有类继承的未初始化常量错误

  19. 19

    带有 iDisplayLength 的错误初始化数据表

  20. 20

    带有数据错误的超级初始化

  21. 21

    带有CUP的JFlex编译错误

  22. 22

    为什么编译器将带有方括号()的数组初始化标记为错误?

  23. 23

    用Clang初始化结构的std :: array的编译器错误

  24. 24

    Swift:在super.init初始化自我编译错误之前的方法调用中使用'self'

  25. 25

    为什么会出现“无法访问的代码”和“变量未初始化”的编译错误?

  26. 26

    编译包含指向模板函数的指针的初始化程序列表时,gcc错误,但clang错误

  27. 27

    如果将错误的参数类型传递给结构初始化程序列表,编译器为什么不生成编译错误?

  28. 28

    带有默认关键字的初始化列表的用法

  29. 29

    带有默认哈希值的Ruby类初始化方法

热门标签

归档