ссылка
От: NordSky Россия  
Дата: 26.03.10 17:45
Оценка:
в черновике стандарта C++ от ноября 09, в разделе перегрузка нашел запись

class Y {
void h() &;
...
};


Поясните пожалуйста и как такой ссылкой пользоваться-то
Re: ссылка
От: Roman Odaisky Украина  
Дата: 26.03.10 18:28
Оценка: 11 (2)
Здравствуйте, NordSky, Вы писали:

NS>void h() &;

NS>Поясните пожалуйста и как такой ссылкой пользоваться-то

void X::f() &;
void X::f() &&;

X x;
x.f();   // &
X().f(); // &&
До последнего не верил в пирамиду Лебедева.
Re[2]: ссылка
От: IROV..  
Дата: 30.03.10 21:56
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, NordSky, Вы писали:


NS>>void h() &;

NS>>Поясните пожалуйста и как такой ссылкой пользоваться-то

RO>
RO>void X::f() &;
RO>void X::f() &&;

RO>X x;
RO>x.f();   // &
RO>X().f(); // &&
RO>


тоесть вызов из rvalue и lvalue?
а пример юза?
я не волшебник, я только учусь!
Re[3]: ссылка
От: Roman Odaisky Украина  
Дата: 30.03.10 22:23
Оценка: 1 (1)
Здравствуйте, IROV.., Вы писали:

IRO>тоесть вызов из rvalue и lvalue?

IRO>а пример юза? :beer:

Какой-нибудь clone(), который может заполнить новый объект ссылками на старое содержимое, вместо того, чтобы выполнять глубокое копирование, что пришлось бы делать при копировании lvalue.

По сути, это всего лишь задание rvalue/lvalue для неявного this. Если у тебя есть do_something(X &&, args), то аналогичная функция-член будет X::do_something(args) &&, для & аналогично.
До последнего не верил в пирамиду Лебедева.
Re[4]: ссылка
От: IROV..  
Дата: 30.03.10 22:28
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Какой-нибудь clone(), который может заполнить новый объект ссылками на старое содержимое, вместо того, чтобы выполнять глубокое копирование, что пришлось бы делать при копировании lvalue.


RO>По сути, это всего лишь задание rvalue/lvalue для неявного this. Если у тебя есть do_something(X &&, args), то аналогичная функция-член будет X::do_something(args) &&, для & аналогично.


так я понял, нужно будет вкурить подкорку что такое && и как лучше его кушать, а то читал читал, вроде все понятно, а вот думать им еще не могу

единственое понял, что с помощью него делаеться всеми ожидаемый move constructor
я не волшебник, я только учусь!
Re[5]: ссылка
От: Roman Odaisky Украина  
Дата: 31.03.10 07:57
Оценка:
Здравствуйте, IROV.., Вы писали:

IRO>так я понял, нужно будет вкурить подкорку что такое && и как лучше его кушать, а то читал читал, вроде все понятно, а вот думать им еще не могу :xz:


Типичное применение — у тебя есть f(X const& x). В случае, когда x после вызова f не нужен, ее можно реализовать более оптимально. Просто добавь воды перегрузку f(X&& x) и реализуй нужную функциональность. Move-конструкторы тоже используют этот подход.
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.