memmovable 型 (QList、QString、int など) のみを含むブースト バリアントをラップするクラスがあります。
そのラッパー クラス memmovable を Qt コンテナーに宣言してもよろしいですか?
Aには、標準で POD であることが保証されてboost::variant
いる整数インデックスと のみが含まれます。aligned_storage
仮想メンバーはありませんが、ユーザー定義のコンストラクターとデストラクターがあります。結果として、boost::variant
はPODではなく、UBであることに注意しようとしています(まあ、それはUBだと思いますが、標準には決定的な参照が見つかりません)。
QList
ただし、QString
、 などについても同じことが言えます。どうやら、Qt は一部の非 POD 型を安全に memmoved できると想定しており、POD (いわゆる「プリミティブ型」) と「可動型」を区別しています。
したがって、 memmove a が安全であると考える場合は、 memmovable 型を含むQList
a を memmove しても安全であると考えることができます。boost::variant
おそらく、POD 以外のタイプの memmoving は技術的に未定義の動作であることをご存知でしょう。それはさておき、バリアントには memmoved で問題になるようなものは何も含まれていません。あなたは QList と QString が memmovable であると述べており、それらが POD であるとは信じられません (私は見たことはありませんが)、boost::variant は悪くありません。