У меня есть class
так:ли временные lvalues Прецедент для станд :: ход
class Widget
{
public:
Widget(A const& a) { /* do something */ }
Widget(A&& a) { /* do something */ }
};
Что я могу использовать, как это:
A a{};
Widget widget{a};
Если бы я пришел к выводу, что не нужно a
больше, я мог бы назвать:
Widget{std::move(a)};
Но теперь, если мне нужен был объект A
только для строительства widget
? Я сделал бы это:
Widget widget{A{}};
или
Widget widget{std::move(A{})};
Я не могу видеть «временный» именующее выражение. 'A {}' является rvalue, поэтому он перегружает разрешение, забирает конструктор перемещения. – juanchopanza
Я думаю, вы хотели написать 'Виджет виджетов {std :: move (a)};' в случае * или *. – nwp
Тогда как получилось 'A {} = A {};' является допустимым выражением? – hgiesel