Size: a a a

2020 August 12

CC

Cool Cooler in C++ Together 2.0
Cool Cooler
Я согласен, что это в большинстве случаев так
Но я допускаю, что в некоторых случаях, сайд-эффекты могут быть как-либо удобны или полезны

Да, да, я пока не могу привести такие случаи
Но это не значит, что их нет
> Да, да, я пока не могу привести такие случаи

Ну вот, @twi1ight_spark1e привёл
источник

🦊

🦊fox.cpp in C++ Together 2.0
🦊fox.cpp
Найди баг
Есть код, который из кучи разных контекстов делает GetValue
источник

🦊

🦊fox.cpp in C++ Together 2.0
В том числе, возможно, из разных потоков
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Cool Cooler
> Да, да, я пока не могу привести такие случаи

Ну вот, @twi1ight_spark1e привёл
Но это единственный пример
И в противовес ему куча-куча случаев, когда оптимизация помогала не страдать ерундой с составлением вложенных условий
источник

🦊

🦊fox.cpp in C++ Together 2.0
источник

CC

Cool Cooler in C++ Together 2.0
Evgeniy Pichuzhkin
Но это единственный пример
И в противовес ему куча-куча случаев, когда оптимизация помогала не страдать ерундой с составлением вложенных условий
Ну таки пример же
И очень даже годный
И их могло быть больше
А вот будь short-circuit оптимизация opt-in'овской, было бы норм, её бы просто включали, когда надо
источник

🦊

🦊fox.cpp in C++ Together 2.0
Поэтому в C++ есть const
источник

🦊

🦊fox.cpp in C++ Together 2.0
А Go сосет
источник

p

pepeground_bot in C++ Together 2.0
а что не так с этим кодом?
источник

T

Timur Bairamukov 🚫🧢... in C++ Together 2.0
Evgeniy Pichuzhkin
Мне нужно было зачистить мапу от пачки возможно присутствующих объектов, и для это предусматривался метод типа
bool delete(const Key&)

Я хотел заодно дешево определить изменилось ли состояние объекта после зачистки, поэтому добавил свою булеву переменную при вызовах

bool isChanged = false;
for (const auto &key : keys) {
 isChanged = isChanged || map.delete(key);
}


Как можно догадаться, дальше одного успешного удаления дело не заходило >_<
А если вместо ИЛИ поставить XOR?
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Timur Bairamukov 🚫🧢
А если вместо ИЛИ поставить XOR?
Тогда мне при четном количестве удаленных элементов скажет, что удаленных нет?
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
А Go сосет
А там есть const?
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
1 xor 1 = 0 же
источник

🦊

🦊fox.cpp in C++ Together 2.0
Cool Cooler
А там есть const?
Неа)
источник

CC

Cool Cooler in C++ Together 2.0
А должен быть?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Cool Cooler
А должен быть?
Нет
источник

CC

Cool Cooler in C++ Together 2.0
Мб, там const был бы полезен так редко, что лучше, если что, просто в именах переменных/методов/etc писать const_имя-которое-было-бы-в-плюсах в качестве имени для явности
источник

CC

Cool Cooler in C++ Together 2.0
Ммм, пример посложнее для меня
источник

CC

Cool Cooler in C++ Together 2.0
Эх, вот люди серьёзные вещи пишут
источник

CC

Cool Cooler in C++ Together 2.0
А я пока ниасиливаю...
источник