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

27 ответов

11 просмотров

Во первых это 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 конструктор уже не нужен из-за этого

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

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

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Карта сайта