4

c++11 標準の最新ドラフトでは、 3.11 章でアラインメントについて説明しています。
後で、章 7.6.1 は整列された構造体 (または変数?) を定義する方法を定義します。

このような構造を定義すると:

alignas(16) struct A
{
  int n;
  unsigned char[ 1020 ];
};

クラス A のすべてのインスタンスが 16 バイトにアラインされるということですか?

または、次のコードのようにする必要がありますか?

struct A
{
  char data[300];
};
alignas(16) A a;

両方の例が間違っている場合、適切に行うにはどうすればよいですか?

PS私はコンパイラに依存するソリューションを探していません。

4

1 に答える 1