Ссылка на rvalue может связываться только с неконстантными значениями?
В предыдущем сообщении указывалось, что ссылка на rvalue может связываться только с неконстантными значениями: Разница между возвратом константной ссылки и ссылки на rvalue
Однако, если это правда, как работает идеальная пересылка?
Для этого определения идеальной пересылки:
template <typename T, typename A1, typename A2>
T* factory(A1&& a1, A2&& a2)
{
return new T(std::forward<A1>(a1), std::forward<A2>(a2));
}
Кажется, что заводская функция может принимать любые типы данных: const lvalue, lvalue, rvalue.
(PS кажется, что ссылка на rvalue могла бы делать все, но я редко вижу запись кода другим, используя его, почему бы и нет? Кажется, что ссылка на rvalue для аргумента функции может не только делать то, что может делать ссылка на lvalue, но и повышает эффективность, избегая ненужных копий)