ExpertiDict

C++ · Avançado · Inglês · Técnico

forwarding reference

ˈfɔːrwɚdɪŋ ˈrɛfɹənssubstantivo

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

Veja também

Todos os termos de C++