Udostępnij za pomocą


Błąd kompilatora C2975

"argument": nieprawidłowy argument szablonu dla wyrażenia stałej "type", oczekiwane wyrażenie stałej w czasie kompilacji

Uwagi

Argument szablonu nie jest zgodny z deklaracją szablonu; wyrażenie stałe powinno pojawić się w nawiasach kątowych. Zmienne nie są dozwolone jako rzeczywiste argumenty szablonu. Sprawdź definicję szablonu, aby znaleźć poprawne typy.

Przykłady

Poniższy przykład generuje kod C2975, a także pokazuje prawidłowe użycie:

// C2975.cpp
template<int I>
class X {};

int main() {
   int i = 4, j = 2;
   X<i + j> x1;   // C2975
   X<6> x2;   // OK
}

C2975 występuje również w przypadku użycia __LINE__ jako stałej czasu kompilacji z /ZI. Jednym z rozwiązań byłoby skompilowanie za pomocą /Zi polecenia zamiast /ZI.

// C2975b.cpp
// compile with: /ZI
// processor: x86
template<long line>
void test(void) {}

int main() {
   test<__LINE__>();   // C2975
}