C++ · Avançado · Inglês · Técnico
forwarding reference
Parâmetro T&& em que T é deduzido, em template ou auto&&. Liga-se a lvalues e rvalues, e T guarda a categoria de valor original para uso com std::forward.
Onde usar
Também chamada de referência universal. Em code review, é preciso distinguir de rvalue reference: void f(std::vector<T>&&) não é forwarding reference, mas template<class T> void f(T&&) é.
Em código
template <typename T>
void f(T&& x) {} // forwarding reference
int a = 0;
f(a); // T = int&
f(5); // T = int
auto&& r = a; // também éExemplos
T double ampersand on a deduced T is a forwarding reference.
T com dois e comerciais, com T deduzido, é uma forwarding reference.
A forwarding reference binds to both lvalues and rvalues.
Uma forwarding reference se liga tanto a lvalues quanto a rvalues.
Cuidado
Se T não é deduzido na chamada, como em um membro de class template, T&& é uma rvalue reference comum.
Sinônimos
referência universal