2

以下:

template <int A>
class __declspec(align(A)) alignable {
};

Visual Studio ではコンパイルされませんが、GNU (__attribute__の代わりに使用__declspec) では問題なく動作します。クラス宣言の一部として使用された場合、コンパイラはテンプレート パラメーターを解決できないようAで、"C2059: 構文エラー: 識別子" というエラーが発生します。

A宣言されているのと同じステートメント内で使用されているため、これが有効な C++ であるかどうか疑問に思い始めています。私が困惑しているのは、GNU がこれを許可していることです。私は標準の「テンプレート」セクションを見てきましたが、これについて明示的なものを見つけることができないようです。

編集:クラスはそのテンプレート パラメーターの 1 つから派生できるため、クラス宣言でテンプレート パラメーターを使用できることは理にかなっているように思えます。

4

0 に答える 0