Ссылка на 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, но и повышает эффективность, избегая ненужных копий)

0 ответов

Другие вопросы по тегам