キーと値の両方の型を必要とするテンプレート化されたキー/値ストレージ クラスを扱っており、std::pair
. ただし、キーのみを格納し、このクラスのインデックスを利用したい場合が見つかりました。キーと値のペアではなくキーのみを処理する (または多くのスペースを浪費する) ようにするには、このことを完全にリファクタリングする必要があるため、std::pair
オブジェクトに空の構造体 (または他のもの)を持たせる方法があるかどうか疑問に思っていました。 、ペアの他のタイプと同じ量のスペースしか占有しません。
私はこれでそれを試しました:
struct EmptyStruct
{
};
そしてこれを実行しました:
typedef std::pair<int, EmptyStruct> TestPair;
std::cout << sizeof(TestPair) << " vs " << sizeof(int) << "\n";
しかし、この出力を得ました:
8 vs 4
VC++ 2012 の「リリース」モードで、/O1「サイズの最小化」を含む最適化が有効になっています。
のコンテキストで構造体を「サイズなし」と見なす方法はありstd::pair
ますか?