聚合类型(std::is_aggregate_v<T> == true)是否暗示该类型也是标准布局(std::is_standard_layout_v<T> == true)?我的直觉是答案是肯定的,但是我并不完全相信。

最佳答案

不,不是的。为了使一个类类型成为标准布局,其所有非静态成员本身都必须是标准布局。但是,对集合没有施加相同的递归要求。所以一个简单的反例

struct bar {
  virtual ~bar() {}
};

struct foo {
    bar b;
};
foo是一个聚合,但不是标准布局。

关于c++ - 聚合类型是否暗示它也是标准布局?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58738474/

10-09 15:52