类声明中模板参数使用的VisualC++错误C2059
以下是:类声明中模板参数使用的VisualC++错误C2059,c++,visual-studio-2010,templates,visual-c++,C++,Visual Studio 2010,Templates,Visual C++,以下是: template <int A> class __declspec(align(A)) alignable { }; 不使用Visual Studio进行编译,但使用_属性而不是_declspec与GNU配合使用效果良好。当用作类声明的一部分时,编译器似乎无法解析模板参数A,给出错误C2059:syntax error:identifier 我开始怀疑这是否是有效的C++,因为A在声明的同一语句中使用。让我困惑的是GNU允许这样做;我已经浏览了标准的模板部分,但似乎找不到
template <int A>
class __declspec(align(A)) alignable {
};
不使用Visual Studio进行编译,但使用_属性而不是_declspec与GNU配合使用效果良好。当用作类声明的一部分时,编译器似乎无法解析模板参数A,给出错误C2059:syntax error:identifier
<>我开始怀疑这是否是有效的C++,因为A在声明的同一语句中使用。让我困惑的是GNU允许这样做;我已经浏览了标准的模板部分,但似乎找不到任何明确的内容
< >编辑:因为一个类可以从它的模板参数中派生出来,所以在模板声明中模板参数是可用的,这似乎是明智的。阅读C++标准并不能告诉你微软的“X解密”是如何工作的,它不会告诉你GNU的属性是如何工作的。你必须阅读编译器的文档来描述它的非标准扩展。阅读C++标准并不能告诉你微软的“X”解密程序是如何工作的,它不会告诉你GNU的属性是如何工作的。您必须阅读编译器的非标准扩展文档。