Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这个派生类不是标准布局类?_C++_C++14_Language Lawyer_C++17 - Fatal编程技术网

C++ 为什么这个派生类不是标准布局类?

C++ 为什么这个派生类不是标准布局类?,c++,c++14,language-lawyer,c++17,C++,C++14,Language Lawyer,C++17,为什么在C++17下,bar不是标准布局类型 #包括 福班{ int x; }; 静态_断言(std::is_standard_layout::value); 分类栏:公共食品{ 浮动y; }; 静态断言(std::is_standard_layout::value);//“静态断言失败” 基于,我理解为什么在C++14之前这不是一个标准布局类型,但我无法通过排除其他所有内容来连接它,这应该是在这里应用的布局类型:“没有一个基类子对象的类型与 对于非联合类型,作为第一个非静态数据成员(请参见空

为什么在C++17下,
bar
不是标准布局类型

#包括
福班{
int x;
};
静态_断言(std::is_standard_layout::value);
分类栏:公共食品{
浮动y;
};
静态断言(std::is_standard_layout::value);//“静态断言失败”
基于,我理解为什么在C++14之前这不是一个标准布局类型,但我无法通过排除其他所有内容来连接它,这应该是在这里应用的布局类型:“没有一个基类子对象的类型与
对于非联合类型,作为第一个非静态数据成员(请参见空基优化),递归地作为该数据成员的第一个非静态数据成员(如果该数据成员具有非联合类类型),或作为该数据成员的所有非静态数据成员(如果该数据成员具有联合类型),或作为该数据成员的元素(如果具有数组类型),等等。”

在您(从)引用的条码之前,条码不符合要求:

要求

  • [……]

  • 在同一类中声明了所有非静态数据成员和位字段(要么全部在派生类中,要么全部在某个基类中)

  • [……]

bar
有一个直接的非静态数据成员
float y
和继承的非静态数据成员
intx来自
foo


这个特殊要求的C++14之后的措辞(大部分情况下?)在功能上与之前的措辞相同,在您链接的问题的答案中也提到了这一点


它之所以被更改,只是因为它的措词可能会产生误解,请参阅,并在其中添加了位字段,因为它们可能未包含在术语“成员”中,请参阅。

我们没有在问题中给出答案。我不明白为什么原来的“排除所有其他内容”部分应该在它具有积极误导性时恢复,因为我设法错过了申请项目,但这没什么大不了的,我猜你的问题存在,因为你“排除了所有其他内容”。如果你把它拿走,那就没问题了。很公平,谢谢