Sdílet prostřednictvím


Chyba kompilátoru C2891

Parametr : nemůže převzít adresu parametru šablony.

Poznámky

Adresu parametru šablony nemůžete vzít, pokud se nejedná o lvalue. Parametry typu nejsou lvalues, protože nemají žádnou adresu. Netypové hodnoty v seznamech parametrů šablony, které nejsou lvalue, nemají také adresu.

Example

Toto je příklad kódu, který způsobuje chybu kompilátoru C2891, protože hodnota předaná jako parametr šablony je kopie argumentu šablony vygenerovaná kompilátorem.

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

Parametry šablony, které jsou lvalues, jako jsou odkazové typy, mohou mít jejich adresu převzatou.

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

Chcete-li tuto chybu opravit, nepoužívejte adresu parametru šablony, pokud se nejedná o hodnotu lvalue.