Написать функцию, принимающую только l-значения, достаточно просто
template
void f(T&);
но из-за универсальных ссылок написать код, который принимает только ссылки rvalue, непросто. Есть ли способ написать общую функцию, которая принимает только ссылки rvalue? (тип возвращаемого значения на самом деле не имеет значения)
template
void only_rvals(T&&);
где
int i{};
only_rvals(i); // fails to compile
only_rvals(6); // successfully compiles
Подробнее здесь: https://stackoverflow.com/questions/242 ... ng-rvalues