以下:
template <int A>
class __declspec(align(A)) alignable {
};
Visual Studio ではコンパイルされませんが、GNU (__attribute__
の代わりに使用__declspec
) では問題なく動作します。クラス宣言の一部として使用された場合、コンパイラはテンプレート パラメーターを解決できないようA
で、"C2059: 構文エラー: 識別子" というエラーが発生します。
A
宣言されているのと同じステートメント内で使用されているため、これが有効な C++ であるかどうか疑問に思い始めています。私が困惑しているのは、GNU がこれを許可していることです。私は標準の「テンプレート」セクションを見てきましたが、これについて明示的なものを見つけることができないようです。
編集:クラスはそのテンプレート パラメーターの 1 つから派生できるため、クラス宣言でテンプレート パラメーターを使用できることは理にかなっているように思えます。