Как создать временный объект, когда для инициализации ссылки на rvalue используется ссылка const lvalue - PullRequest
2 голосов
/ 31 марта 2020

Следующий код:

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; }

Предоставляет стандарту соответствующее решение?

...