编译器错误 C2755

“param”:部分专用化的非类型参数必须是简单标识符

非类型参数需要是一个简单的标识符,这样,编译器可以在编译时将它解析为单个标识符或常量值。

以下示例生成 C2755:

// C2755.cpp
template<int I, int J>
struct A {};

template<int I>
struct A<I,I*5> {};   // C2755
// try the following line instead
// struct A<I,5> {};