2
[[no_unique_address]]と同じタイプの2つのメンバー値
で遊ん[[no_unique_address]]でいc++20ます。 cppreferenceの例では、空のタイプEmptyとタイプがありますZ struct Empty {}; // empty class struct Z { char c; [[no_unique_address]] Empty e1, e2; }; どうやら、の大きさはZ、少なくともなければならない2ので、タイプのe1とe2同じです。 しかし、私は本当にZサイズが欲しいです1。これEmptyによりe1、さまざまなタイプのとを適用する追加のテンプレートパラメーターを使用して、いくつかのラッパークラスでラップすることについて考えましたe2。 template <typename T, int i> struct Wrapper : public T{}; struct Z1 { char c; [[no_unique_address]] Wrapper<Empty,1> e1; [[no_unique_address]] Wrapper<Empty,2> e2; }; 残念ながら、sizeof(Z1)==2。サイズをZ11 にするためのコツはありますか? 私はこれをテストしていますgcc version 9.2.1し、clang version 9.0.0 私のアプリケーションでは、フォームの空のタイプがたくさんあります …