Следующий код:
struct T {};
const T& foo();
void bar(T&& arg);
bar(T(foo()));
Последняя строка верна, но она использует T напрямую. Если T несколько сложнее (например, с использованием шаблонов), то строка становится некрасивой. Поскольку у нас есть std::move
и std::forward
, мне интересно, есть ли что-то похожее в стандартной библиотеке для вышеуказанного случая. Что-то вроде
template<class T>
T make_temporary(const T& arg) { return arg; }
Предоставляет стандарту соответствующее решение?