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

Коллеги, подскажите с NRVO: return a += b; получается ведь хуже, чем a

+= b;
return a;

? Потому что компилятор заведомо не докажет, что += возвращает ссылку на первый аргумент?

15 ответов

24 просмотра

А вы пробовали посмотреть на бинарник?

Дмитрий ⬡-Лапшин Автор вопроса
Dmitriy [Отпуск]
Да

А почему так ? Есть где посмотреть детали ?

Dmitriy [Отпуск]
Потому что они возвращают L-value reference

А разве оптимизация не должна помочь этому ? Я имею введу что тут очевидно видно что дальше не используется это временное значение

Пользователь 61534
А разве оптимизация не должна помочь этому ? Я име...

Стрельба в ногу Стандартом не запрещена...)) Надо подойти к вопросу с чисто формальной точки зрения. Ссылка Type& не считается временным значением.

Dmitriy [Отпуск]
Стрельба в ногу Стандартом не запрещена...)) Надо ...

Я либо не понимаю либо я застрял немного в другом языке. Разве стандарт не говорит о видимом виде исполнения? Или в данном случае это уже компилятор выбирает выбрать так или все же исполнить так но с оптимизацией

Dmitriy [Отпуск]
Стрельба в ногу Стандартом не запрещена...)) Надо ...

Или я непросканировал слово стрельба в ногу не запрещена и тогда все сходится )

Dmitriy [Отпуск]
Потому что они возвращают L-value reference

Я стесняюсь спросить, а как lvalue reference связано с copy elision?

Andrei K
Я стесняюсь спросить, а как lvalue reference связа...

Если вы видите "A& operator+=(A& lhs, const A& rhs);", вы можете сказать _точно_, что возвращает этот оператор? Вот и компилятор тоже не может, не пытаясь решить неразрешимую задачу (см. теорема Райса).

Vladimir Bayrashevskiy
Если вы видите "A& operator+=(A& lhs, const A& rhs...

Это может работать по-разному. Сильно зависит от оптимизатора. К примеру, пасс оптимизитора, который делает RVO может находится после того как был сгенерирован код для += и оптимизатор может инферрить какие-то вещи о возвращаемом значении.

Andrei K
Это может работать по-разному. Сильно зависит от о...

Это как? Сгенерили одни инструкции, а потом раз и оптимизатор всё переделал?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта