2012-02-13 16 views
1

私はPODの構造体を持っていますが、便宜上、std::initializer_list ctorが必要です。デフォルトctor、copy ctorおよびdtorは暗黙的です。それはinitializer_listのctorを使用すると、PODなどの構造体を失格しかしようだ、それ故にそれは労働組合の内部ですることはできません。構造体内に `initializer_list` ctorを持つ構造体はありますか?

#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の無制限の組合機能に関連していますか?

答えて

-1

組合自体には、明示的なctorのを持っている必要があります - this articleのおかげで):

union _u{ 
    A a; 
    _u(){}; 
} a; 
+1

うーん... 'A'は、デフォルトコンストラクタを持たないように労働組合のコンストラクタも、それので、' A'を初期化する必要があることを – Potatoswatter

関連する問題