Megosztás a következőn keresztül:


C2975-ös fordítási hiba

'argumentum' : érvénytelen sablon argumentum a(z) 'típus' számára, fordítási időben végrehajtott konstans kifejezés várt

Megjegyzések

A sablon argumentuma nem egyezik a sablondeklarációval; a szögletes zárójelek között állandó kifejezésnek kell megjelennie. A változók nem használhatók sablonbeli tényleges argumentumként. Ellenőrizze a sablondefiníciót, hogy megtalálja a megfelelő típusokat.

Példák

Az alábbi példa C2975-öt hoz létre, és a helyes használatot is megjeleníti:

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

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

A C2975 akkor is előfordul, ha fordítási idejű konstansként használja a __LINE__-t a /ZI-tel. Az egyik megoldás az lenne, hogy /Zi-vel fordítunk a /ZI helyett.

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

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