170 похожих чатов

27 ответов

26 просмотров

Во первых это copy/move конструктор

Ramil-Rizvanov Автор вопроса

Это просто вызов конструктора. Такой есть в примерах стандарта [Note 1: Because constructors do not have names, they are never found during unqualified name lookup; however an explicit type conversion using the functional notation ([expr.type.conv]) will cause a constructor to be called to initialize an object. The syntax looks like an explicit call of the constructor. — end note] [Example 2: complex zz = complex(1,2.3);

Нет

можете сами пробежаться по началам пунктов в списках, чтобы понять, что copy elision тут никаком боком http://eel.is/c++draft/class.copy.elision#1 http://eel.is/c++draft/class.copy.elision#3

@dpaukaev кстати http://eel.is/c++draft/dcl.init#general-16.6.1

Vlad
@dpaukaev кстати http://eel.is/c++draft/dcl.init#g...

https://godbolt.org/z/bqrTMnc6x не понятно чем ему мув конструктор тогда мешает)

Denis P
https://godbolt.org/z/bqrTMnc6x не понятно чем ем...

по моему там вполне понятное сообщение об ошибке.

Denis P
https://godbolt.org/z/bqrTMnc6x не понятно чем ем...

этот код успешно компилируется в режиме С++17 и новее этот пункт (dcl.init#general-16.6.1) приехал вместе с прочими формулировками copy elision в [p0135] я согласен, что концептуально в S s = S() опускается лишний вызов оператора перемещения, и таково было намерение автора бумаги, но с точки зрения стандарта copy elision это вполне конкретное явление, разрешенное в закрытом перечне контекстов, и рассматриваемый случай в них не входит

Vlad
этот код успешно компилируется в режиме С++17 и но...

P0135R0: Guaranteed copy elision through simplified value categories (by Richard Smith) (2015-09-27) P0135R1: Wording for guaranteed copy elision through simplified value categories (by Richard Smith) (2016-06-20)

Denis P
в чем оно понятное?

Стандарты имеют свойство изменяться :)

我が名はレギオン
Это просто вызов конструктора. Такой есть в приме...

Если отключить copy-ellision, то там будет вызов мув конструктора https://godbolt.org/z/4sK71fsde

Ramil-Rizvanov Автор вопроса
Ilya Zviagin
Нет

можно подробней? перечитал cppref , там все сводится к вызову конструктора, который сведется к copy elision

Ilya Zviagin
А нечего подробнее

я подробнее приводил ссылку на годболт. да, это copy elision

Stas
я подробнее приводил ссылку на годболт. да, это co...

концептуально это он, но по стандарту copy elision как термин это примерно return value optimization, и приведенный пример под это не очень подходит https://t.me/supapro/1016714

Vlad
концептуально это он, но по стандарту copy elision...

Можно это ещё показать без -fno-copy-elision: если удалить copy/move конструкторы, то T t = T(); перестанет компилироваться

Stas
Можно это ещё показать без -fno-copy-elision: если...

в эту опцию компилятора вложен такой смысл, какой захотели разработчики компилятора. оно не обязано коррелировать со значением copy elision, которым пользуется стандарт

Stas
Если отключить copy-ellision, то там будет вызов м...

На с++17 и с этим флагом не будет никаких мувов

Stas
а на с++14 будет

У некоторых копиляторов будет. У icc и на С++11 нет никакого мува

我が名はレギオン
На с++17 и с этим флагом не будет никаких мувов

и оно так не потому, что эта форма записи поменяла сущность, а потому что появился guaranteed copy elision и move конструктор уже не нужен из-за этого

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта