2

以下:

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

不能使用 Visual Studio 编译,但可以在 GNU 中正常工作(使用__attribute__而不是__declspec)。A当用作类声明的一部分时,编译器似乎无法解析模板参数,并给出错误“C2059:语法错误:标识符”。

我开始怀疑这是否是有效的 C++,因为A它是在声明它的同一语句中使用的。令我困惑的是 GNU 允许这样做。我已经浏览了标准的“模板”部分,但似乎找不到任何明确的内容。

编辑:由于类可以从其模板参数之一派生,因此在类声明中可以使用模板参数对我来说似乎是明智的。

4

0 回答 0