Универсальные ссылки (universal references) — это специальный вид ссылок в C++, которые годятся для работы с rvalue и lvalue одновременно.
Пример использования универсальной ссылки:
#include <iostream>
#include <vector>
// Функция, использующая универсальную ссылку для перфектного форвардинга
template <typename T>
void forwardValue(T&& val) {
std::cout << "Received value: " << val << std::endl;
}
int main() {
int num = 42;
forwardValue(num); // lvalue, T будет выведен как int&
forwardValue(10); // rvalue, T будет выведен как int
std::string str = "Hello";
forwardValue(std::move(str)); // std::move(str) - rvalue, T будет выведен как std::string&&
return 0;
}