vladislav
Извините, но я ору. Люблю СПб. Всех с новым годом, счастливых стандартов и документации к либам!
vladislav
Vladislav
Alexander "SonnySlave"
http://www.bfilipek.com/2017/12/cpp-status-2017.html
Ender
А разве в штудии нет возможности к проекту на сипп винформс подключить? Там же был какой-то ГРЯЗНЫЙ ХАК с подключением винформс. Просто дело в том, что это говно депрекейтед и очевидно оно не подключается. Но можно так. Ты просто не прочитал наверное.
Ender
Wpf, WinForms выбирай не хочу
Ender
Ой
Ender
С Новым Годом
Anonymous
Как скомпилировать ffmpeg с swscale на windows под mingw?
Просто
./configure --enable-swscale && make && make install завершается успешно, но swscale в итоге всё равно нет.
Ioann_
Ребята а это rvo: ?
std::string c(a + b)
Где а и b это std string.
Ioann_
?
Ioann_
В книге написано что рво это замена инициализации копированием - прямой инициализацией в контексте возвращаемого значения
Ioann_
А в данном случае, вроде как прямой инициализации не будет, но объект а + b может быть сконструирован прямо в c
Ioann_
Или это и будет прямая инициализация ? Лал ?
Surreal
+ возвращает новую строку. Вопрос, видимо, в том, где она будет сконструирована: в c, или сначала в tmp, потом в c.
Surreal
Это implementation defined, скорее всего.
Surreal
Я подозреваю, что для кейса c(a + b) есть спец. оптимизации у всех компиляторов. А так, +, вроде, аналогичен string(a).append(b) и без tmp строки вполне можно обойтись, но внутри там еще что-то более оптимальное, наверняка.
Anton
Надо на годболте повертеть, в какой код эти случаи развернутся. Но лень
Ioann_
Ioann_
Так как автор дает определение rvo такое
Ioann_
Ioann_
То что тут оптимизируется я знаю, так как уже сто лет этим пользуюсь. Вопрос в том как эта оптимизация называется корректно если иисходить из определения выше
Anton
Так как автор дает определение rvo такое
*... в контексте возвращаемого значения*
А этот случай выходит за контекст возвращаемого значения из оператора +. Т.е. объект, созданный внутри оператора конечно будет помещён по адресу возврата, но его дальнейшая судьба уже вне "компетенции" rvo
Наверное как-то так
Andrei
в целом, это должно быть rvo. Возврат из функции временного объекта
Andrei
Andrei
более того. копирования не будет и временного объекта тоже. operator+ скорее всего вызывает конструктор с нужным значением, поэтому компилятор сконструирует объект сразу в нужном месте
Ignat
если ты посмотришь на сгенерированный типичным конпелятором ачм, то увидишь, что там достаточно много лишних инструкций, которые, тем не менее, действительно жрут твои драгоценные ЦИКЛЫ
Surreal
Именно для кейса string c(a+b)?
Surreal
Там минимум rvo, а в идеале что-то еще более мудреное, т.к. кейс достаточно распространен, чтобы намутить специальную оптимизацию.
Ignat
полагаю, между различными basic blocks несколько бесполезных инструкций нагенерится, да
Ignat
ну очевидно основное время ты в любом случае проведёшь в operator+
Ignat
(если не вброса ради, а правда интересно, то сравни сгенерированный код: https://godbolt.org/g/88GGyL)
Surreal
Я уже посмотрел давно. Я не понимаю, что вы подразумеваете под лишними инструкциями.
Andrei
Anonymous
привет
кто нить знает как по быстрому преобразовать код на асме в массив опкодов?
и еще, почему msvc++ компилер не дает юзать asm {} вставки?
Anonymous
Anonymous
точнее у в мсвц есть __asm но он работает только на x86, если компилить под х64 то он дает ошибку
Stanislav
Stanislav
либо внешний асм прикостыливать
Anonymous
а как теперь мне делать свои асм вставки?)
mishipeshu
/stat@combot
Anonymous
JIT компилить ассемблер?)
Ignat
Ignat
видимо, скорее masm
Anonymous
нахуя они его выкинули?
Ignat
а нахуя они нужны?
Anonymous
а почему нет?
Anonymous
для кучи вещей
Ignat
а почему не добавить в стандарт 2D графику на основе Cairo, например?
Ignat
oh wait...
Stanislav
а почему нет?
https://docs.microsoft.com/en-us/cpp/build/intrinsics-and-inline-assembly
Stanislav
теперь вопрос, нахер встроенный асм?
Anonymous
хз))
Ignat
а почему нет?
видимо, компилятору сильно приятнее работать с семантикой С++ без ограничений, накладываемых асмом
Anonymous
например, каких?)
Stanislav
интринсики хотя бы меж компиляторами совместими
Ignat
ну в смысле
Ignat
если у тебя семантика volatile asm или как там это называется
Ignat
то с ним делать нельзя вообще ничего
Stanislav
а то понапишут инлайн асм, который потом никуда не портанешь
Ignat
ну это проблемы разработчиков, казалось бы
Anonymous
@crackedmind а это ты меня прошлый раз банил?
Ignat
банить за инлайн асм — звучит как неплохой план!
Anonymous
та не, я по читам спрашивал
Anonymous
какой то из одменов сагрился на это оч серьезно
Anonymous
мол читы == плоха
Berkus
Ioann_
Ну мсвц плохо оптимизирует код, как быть когда у тебя есть версия оптимизированного кода и ты ее хочешь использовать ?