私は記憶域にboost :: variantを使用し、1つの可能なデータメンバーは大きな構造体です。したがって、バイナリバリアントのサイズは少なくともこの構造体サイズです。他のすべてのメンバーは私の場合intまたはdoubleのように非常に小さいです。 基本的な大きなレイアウトを避けるには、boost :: variantに項目をポインタとして保存させる方法がありますか?もちろん 私は、この大規模な構造体を格納するためのスマートポインタを使用するが、この場合にはMethodeのも、ポインタのアクセスとして働くだろう得ることができます。これは、500バイトポインタをストアするための強制ブーストバリアント
のとても素敵
boost::variant<int,double,large_struct>>
サイズではありませんまたは他の小さなソリューションが、それぞれのアクセスはポインタ
boost::variant<int,double,shared_ptr<large_struct>
はsizeof 40バイトに対処する必要がある
あなたの 'large_struct'はどこに格納されるので、同じ500バイトのメモリを占有しませんか? –