Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Parameter : kan inte ta adressen till en mallparameter
Anmärkningar
Du kan inte ta adressen till en mallparameter om det inte är en lvalue. Typparametrar är inte lvalues eftersom de inte har någon adress. Värden som inte är av typen i mallparameterlistor som inte är lvalues har inte heller någon adress.
Example
Det här är ett exempel på kod som orsakar kompilatorfel C2891, eftersom värdet som skickas som mallparameter är en kompilatorgenererad kopia av mallargumentet.
template <int i> int* f() { return &i; }
Mallparametrar som är lvalues, till exempel referenstyper, kan få sin adress tagen.
template <int& r> int* f() { return &r; }
Åtgärda det här felet genom att inte ta adressen till en mallparameter om det inte är en lvalue.