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私はコンパイラに依存するソリューションを探していません。