1

我有一个 POD 结构,但为了方便起见,我希望它有std::initializer_listctor。默认 ctor、复制 ctor 和 dtor 是隐式的。然而,似乎使用initializer_listctor 会取消该结构作为 POD 的资格,因此它不能位于联合内部:

#include<initializer_list>
struct A{
   A(const std::initializer_list<int>&);
};

union{
   A a;
} a;

gcc 4.6 --std=c++0x:

error: use of deleted function ‘&lt;anonymous union>::._0()’
error: ‘&lt;anonymous union>::._0()’ is implicitly deleted because the default definition would be ill-formed:
error: no matching function for call to ‘A::A()’

周围有吗?是否与 c++11 的无限制联合功能有关?

4

1 回答 1

-1

联合本身必须有一个明确的 ctor——感谢这篇文章):

union _u{
   A a;
   _u(){};
} a;
于 2012-02-13T12:39:29.933 回答