'argument' :'type'的模板参数无效,应为编译时常量表达式
模板参数与模板声明不匹配;常量表达式应采用尖括号。 不允许变量作为模板实际参数。 请检查模板定义,以找到正确的类型。
示例
以下示例生成 C2975,并显示正确的用法:
// C2975.cpp
template<int I>
class X {};
int main() {
int i = 4, j = 2;
X<i + j> x1; // C2975
X<6> x2; // OK
}
当使用 __LINE__
作为 /ZI
的编译时常量时也会发生C2975。 一种解决方案是使用 /Zi
而不是 /ZI
编译。
// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}
int main() {
test<__LINE__>(); // C2975
}