Udostępnij przez


Błąd kompilatora C2891

"parametr" : nie można pobrać adresu parametru szablonu

Uwagi

Nie można podjąć adresu parametru szablonu, chyba że jest to lvalue. Parametry typu nie są wartościami lvalue, ponieważ nie mają adresu. Wartości nietypowe na listach parametrów szablonu, które nie są wartościami lvalue, również nie mają adresu.

Example

Jest to przykład kodu, który powoduje błąd kompilatora C2891, ponieważ wartość przekazana jako parametr szablonu jest kopię wygenerowaną przez kompilator argumentu szablonu.

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

Parametry szablonu, które są wartościami lvalue, takimi jak typy odwołań, mogą mieć ich adres.

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

Aby naprawić ten błąd, nie należy przyjmować adresu parametru szablonu, chyba że jest to lvalue.