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 型を含むQLista を memmove しても安全であると考えることができます。boost::variant
おそらく、POD 以外のタイプの memmoving は技術的に未定義の動作であることをご存知でしょう。それはさておき、バリアントには memmoved で問題になるようなものは何も含まれていません。あなたは QList と QString が memmovable であると述べており、それらが POD であるとは信じられません (私は見たことはありませんが)、boost::variant は悪くありません。