我有一个 POD 结构,但为了方便起见,我希望它有std::initializer_list
ctor。默认 ctor、复制 ctor 和 dtor 是隐式的。然而,似乎使用initializer_list
ctor 会取消该结构作为 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 ‘<anonymous union>::._0()’
error: ‘<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 的无限制联合功能有关?