1

私はPODである構造体を持っていますが、便宜上、std::initializer_listctorが必要です。デフォルトのctor、copy 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 ‘&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 に答える