@ProCxx

Страница 2323 из 2477
Anatoly
04.09.2018
17:51:23
А чем undeclare не понравился то? я не понял
видишь, все кроме transfer не несут смысловую нагрузку по перемещению состояния

по идее, надо так и называть transfer_and_undeclare

но это чертовски длинно

Matwey
04.09.2018
17:53:07
А как переселение душ по англ? transmigrate?

Google
Matwey
04.09.2018
17:53:10
Как-то так?

Дед Пегас
04.09.2018
17:53:26
Переселение душ это не то.

Anatoly
04.09.2018
17:53:27
можно короче: eat

Дед Пегас
04.09.2018
17:53:36
Тело-то тоже перемещается.

Matwey
04.09.2018
17:53:50
лучше std::omnomnom тогда

eat неплохо, да

Anatoly
04.09.2018
17:54:09
eat наверное отражает действие, которое совершается с объектом

объект уходит, а состояние попадает в пищевод

Matwey
04.09.2018
17:54:33
Мне нравится, да

Aidar
04.09.2018
17:55:17
Мне нравится омномном

Igor
04.09.2018
17:57:38
А, теперь понял, все хотят fun(transfer(x)) а не fun(move(x)); undeclare x; Соглашусь, да

Nik
04.09.2018
17:58:08
мимокрокодил, это какая-то новая фича? пропозал?

Google
Дед Пегас
04.09.2018
18:01:38
ИМХО, transfer вполне хорошо смотрится всё же.

Как-то что-то другое даже не придумывается...

Anton
04.09.2018
18:02:26
drag ?

Ruslan
04.09.2018
18:02:40
haul

Anatoly
04.09.2018
18:22:22
ИМХО, transfer вполне хорошо смотрится всё же.
да, он смотрится годно, но не совсем точно говорит о том, что же ждет переменную

хотя, с другой стороны, уже сказано либо писать толстовские фразы transfer_and_undeclare, либо как-то так std::transfer/std::eat

Aidar
04.09.2018
18:25:48
drag ?
Кстати drop

A.D.
04.09.2018
18:27:14
нуль телепортация
Сепуление, ага

Marshall

Dmitry
04.09.2018
18:33:42
rlymove

A.D.
04.09.2018
18:36:22
Pass

Xessao
04.09.2018
18:43:04
А зачем давать имя? Ведь если реализовать фичу из раста, то и работать это должно глобально. Ну да, старый код малеха сломается. В противном случае весь код заполнится transfed(x) + можно будет забыть написать. Двойная работа.

Dmitry
04.09.2018
19:00:08
+1
Т.е. безусловно, если хоть где-нибудь встретилось borrow то независимо от условия значение считается borrowed?

Antony
04.09.2018
19:53:06
Да

Хм... std::borrow

Stanislav
04.09.2018
19:54:16
Alexandr
04.09.2018
20:34:22
Чем отличается T& от T&&

?

Aidar
04.09.2018
20:34:43
какой контекст

Google
Aidar
04.09.2018
20:34:50
тут это важно

потомучто int&& это rvalue reference а template<typename T> void foo(T&&) - forwarding reference

Alexandr
04.09.2018
20:39:34
какой контекст
Не использовал, не знаю, хочу разобраться

Про ссылку я знаю, ссылка это ссылка, а вот как работает && недогоняю

Крис
04.09.2018
20:42:30
Про ссылку я знаю, ссылка это ссылка, а вот как работает && недогоняю
Если в темплейтах, то форвардится либо reference or rvalue-reference, зависит от того что ты вкинул в темплейт параметр, если это не в контексте темплейтов то это rvalue-reference

Anatoly
04.09.2018
20:43:33
Чем отличается T& от T&&
что уже читал? что понял?

Крис
04.09.2018
20:44:18
Чем отличается T& от T&&
Ну а вообще, для такого @supapro

Alexandr
04.09.2018
20:45:07
что уже читал? что понял?
Про то, что & это lvalue, а && rvalue. Но в чем между ними разница, в каких случаях используется & , а в каких &&

Aidar
04.09.2018
20:46:51
Nik
04.09.2018
21:23:29
иди читай майерса
Теперь нужно аккуратно читать. Скотт сказал что больше не будет править найденные косяки в книгах

Yarique
04.09.2018
21:28:19
про forwarding reference там без ошибок ?

Igor
04.09.2018
21:31:41
Теперь нужно аккуратно читать. Скотт сказал что больше не будет править найденные косяки в книгах
Конечно теперь опаснее читать, ведь ошибки в книге про C++11 будут встречаться чаще чем раньше. Осталось только понять почему. Потому что C++11 все еще допиливают или что?

Aidar
04.09.2018
21:32:32
про forwarding reference там без ошибок ?
там ваще в названии ошибка

Yarique
04.09.2018
21:33:00
там ваще в названии ошибка
там есть про эта пометка, я читал с пометкой уже, что книгу до названия forwarding reference написао Скотт

Nik
04.09.2018
21:34:08
Конечно теперь опаснее читать, ведь ошибки в книге про C++11 будут встречаться чаще чем раньше. Осталось только понять почему. Потому что C++11 все еще допиливают или что?
JFYI, если искать лениво: http://www.aristeia.com/BookErrata/ec++3e-errata.html и http://www.aristeia.com/BookErrata/emc++-errata.html Обрати внимание, когда вышла книга, и сколько еще времени слали найденные баги

И до сих пор, кстати, шлют

Igor
04.09.2018
21:35:04
Nik
04.09.2018
21:35:42
О них теперь не будет известно. Скотт не будет проверять и публиковать исправления, и даже сообщать о найденных кем-то ошибках.

Но конечно это не помешает писать код в стиле "скомпилил-поправил ошибку-скомпилил-поправил ошибку-повторить 100500 раз"

Ilia
05.09.2018
04:52:14
Ну а вообще, для такого @supapro
Не совсем, это сложный, тяжёлый вопрос...

Google
Ilia
05.09.2018
04:53:40
Про то, что & это lvalue, а && rvalue. Но в чем между ними разница, в каких случаях используется & , а в каких &&
Это не так. Обе ссылки могут быть на любые значения. Ты уже запутался.

Ну а вообще, для такого @supapro
Крисс, у тебя не осталось статьи что я тебе давал по универсальным ссылкам? Дай парню если есть ...

У меня просто не под рукой.

Это просто ещё одна статья с объяснением универсальных ссылок, мне например зашла лучше Меерса

Valentin
05.09.2018
06:04:28
Го сюда ее

Dmitry
05.09.2018
06:33:02
Хм... std::borrow
Не, всё таки borrow подразумевает возврат владения.

Не, всё таки borrow подразумевает возврат владения.
И не std, это же не библиотечная явно фича.

И не std, это же не библиотечная явно фича.
Какой нибудь префиксный оператор, типа ->. Foo(->x).

Какой нибудь префиксный оператор, типа ->. Foo(->x).
Это получается cast в rvalue и вызов деструктора в конце текущего выражения. А значит деструктор на выходе из scope будет условный.

Это получается cast в rvalue и вызов деструктора в конце текущего выражения. А значит деструктор на выходе из scope будет условный.
Значит переменная будет сопровождаться флагом moved и обращение после перемещения может быть compile error в том же scope и runtime error за его пределами.

Basil
05.09.2018
07:10:51
можно короче: eat
можно длиннее, но, imo, понятнее: reloc

reloc тоже перемещение, но предполагает, что на старом месте работника уже нет.

а вот как runtime error делать, не вкурю. объекта то уже нет, кто будет хранить инфу о том, что он уже "всё". замусорить память?

Matwey
05.09.2018
07:21:44
Ilia
05.09.2018
07:23:07
Чем отличается T& от T&&
Читай тут http://thbecker.net/articles/rvalue_references/section_01.html

Basil
05.09.2018
07:25:15
ага, т.е. это окончательная финализация. он есть, но не доступен по обращению. так так и назвать. finalyze

Ilia
05.09.2018
07:26:09
ага, т.е. это окончательная финализация. он есть, но не доступен по обращению. так так и назвать. finalyze
А что вотэто был за поток сознания про какие-то перемещения? Можно резюме, ибо я лично ничего не понял.

Kramol
05.09.2018
07:27:18
тут подумав добавить проверку к своему проекту что отправил по usb контрольную сумму сравнить. Пока не смотрел как делать, есть у вас предложение как это реализовать?

Matwey
05.09.2018
07:28:15
Значит переменная будет сопровождаться флагом moved и обращение после перемещения может быть compile error в том же scope и runtime error за его пределами.
Не, это всё не будет работать, уже есть move-семантика на которой всё это можно сделать. Нужно чтобы в компайл-тайме компилятор ругался на использование имени уничтоженной переменной.

Google
Basil
05.09.2018
07:28:48
Matwey
05.09.2018
07:38:23
Значит переменная будет сопровождаться флагом moved и обращение после перемещения может быть compile error в том же scope и runtime error за его пределами.
Фактически, изначальное предложение (как понял его я) - это механизм, аналогичный концу скоупа }, но действующий изберательно на определенную переменную. Но дальше чтобы каждый раз не писать y = std::move(x); undeclare x; предлагается объединить это в одну операцию (оператор), который стирает из бытия компайл-тайма переменную, но позволяет забрать из неё состояние перед этим (на случай, если оно кому-то нужно).

Dmitry
05.09.2018
07:41:56
а вот как runtime error делать, не вкурю. объекта то уже нет, кто будет хранить инфу о том, что он уже "всё". замусорить память?
Компилятор скрытый флаг сделает. А вот runtime error какой это да, непонятно, UB или сигнал какой то по аналогии с segfault.

Matwey
05.09.2018
07:45:11
А нафига такое надо вообще? Ни в одном языке которые я знаю, нет такой возможности. Как-то это намекает на то, что такая возможность не нужна никому.
Например, чтобы компилятор ловил ошибки за программистом, который смувил переменную, а потом в неё полез случайно (потому-что опечатлося к примеру) и обнаружил это только в рантайме по странным глюкам

Basil
05.09.2018
07:49:32
Например, чтобы компилятор ловил ошибки за программистом, который смувил переменную, а потом в неё полез случайно (потому-что опечатлося к примеру) и обнаружил это только в рантайме по странным глюкам
подумал над этим, всё одно фигня выходит. move тем и хорош, что не гадит на стеке. а тут данные перемести, а сам объект оставь, но переделай на возврат ожидаемого поведения по обращению.

Страница 2323 из 2477