共用方式為


編譯器錯誤 C2975

'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
}