Я видел это:Какие функции могут быть применены к rvalues?
std::tie(iter, inserted) = set_of_s.insert(value);
из http://en.cppreference.com/w/cpp/utility/tuple/tie
std::tie
должен возвращать RValue кортеж, но оператор присваивания затем применяется к нему. Как это работает? Я думал, что операторы присваивания могут применяться только к lvalue?
По определению 'std :: tie' возвращает объект (даже не ссылаясь на него), который имеет' operator =() 'defined. И этот оператор вызывается. Как обычно. Где вы видите проблему? –
@ c-smile Я просто очень смущен cuz opetator =() возвращает ссылку lvalue и нет нигде для ее возвращения ... – texasbruce
Это ваше задание именно так: '{std :: tie temp (iter, вставлен); temp.operator = (set_of_s.вставки (значение)); } '. Как вы видите, это просто вызов функции для временного объекта, –