Teilen über


Compilerfehler C2891

'parameter': Die Adresse eines Vorlagenparameters kann nicht verwendet werden.

Bemerkungen

Sie können die Adresse eines Vorlagenparameters nicht übernehmen, es sei denn, es handelt sich um einen Wert. Typparameter sind keine Werte, da sie keine Adresse haben. Werte ohne Typ in Vorlagenparameterlisten, die nicht lvalues sind, haben auch keine Adresse.

Example

Dies ist ein Beispiel für Code, der den Compilerfehler C2891 verursacht, da der als Vorlagenparameter übergebene Wert eine compilergenerierte Kopie des Vorlagenarguments ist.

template <int i> int* f() { return &i; }

Vorlagenparameter, die lvalues sind, z. B. Verweistypen, können ihre Adresse übernehmen.

template <int& r> int* f() { return &r; }

Um diesen Fehler zu beheben, übernehmen Sie nicht die Adresse eines Vorlagenparameters, es sei denn, es handelt sich um einen Wert.