Delen via


Compilerfout C2891

'parameter': kan het adres van een sjabloonparameter niet overnemen

Opmerkingen

U kunt het adres van een sjabloonparameter niet nemen tenzij het een lvalue is. Typeparameters zijn geen lvalues omdat ze geen adres hebben. Niet-typewaarden in sjabloonparameterlijsten die geen lvalues zijn, hebben ook geen adres.

Example

Dit is een voorbeeld van code die compilerfout C2891 veroorzaakt, omdat de waarde die als sjabloonparameter is doorgegeven, een door compiler gegenereerde kopie van het sjabloonargument is.

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

Sjabloonparameters die lvalues zijn, zoals referentietypen, kunnen hun adres laten nemen.

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

Als u deze fout wilt corrigeren, neemt u het adres van een sjabloonparameter niet op, tenzij dit een lvalue is.