Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, NordSky, Вы писали:
NS>>void h() &; NS>>Поясните пожалуйста и как такой ссылкой пользоваться-то
RO>
Здравствуйте, IROV.., Вы писали:
IRO>тоесть вызов из rvalue и lvalue? IRO>а пример юза? :beer:
Какой-нибудь clone(), который может заполнить новый объект ссылками на старое содержимое, вместо того, чтобы выполнять глубокое копирование, что пришлось бы делать при копировании lvalue.
По сути, это всего лишь задание rvalue/lvalue для неявного this. Если у тебя есть do_something(X &&, args), то аналогичная функция-член будет X::do_something(args) &&, для & аналогично.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Какой-нибудь clone(), который может заполнить новый объект ссылками на старое содержимое, вместо того, чтобы выполнять глубокое копирование, что пришлось бы делать при копировании lvalue.
RO>По сути, это всего лишь задание rvalue/lvalue для неявного this. Если у тебя есть do_something(X &&, args), то аналогичная функция-член будет X::do_something(args) &&, для & аналогично.
так я понял, нужно будет вкурить подкорку что такое && и как лучше его кушать, а то читал читал, вроде все понятно, а вот думать им еще не могу
единственое понял, что с помощью него делаеться всеми ожидаемый move constructor
Здравствуйте, IROV.., Вы писали:
IRO>так я понял, нужно будет вкурить подкорку что такое && и как лучше его кушать, а то читал читал, вроде все понятно, а вот думать им еще не могу :xz:
Типичное применение — у тебя есть f(X const& x). В случае, когда x после вызова f не нужен, ее можно реализовать более оптимально. Просто добавь воды перегрузку f(X&& x) и реализуй нужную функциональность. Move-конструкторы тоже используют этот подход.