Anatoly
Anatoly
Berkus
буду делать предложения покороче
Alexander "SonnySlave"
msvc стал лучше, но всё равно говно
Alexander "SonnySlave"
И когда он там выйдет на уровень нормальных компиляторов, хз
Igor
auto iter = std::find(container.begin(), container.end(), elem) + 1
если найдётся end, его инкремент приведёт к UB?
Evgenii
да
Igor
рыр(
auto it = flag ? cont.find(x) : cont.begin();
for ( ; it != cont.end(); ++it) {
do_stuff(*it);
if (flag)
return;
}
сильно хрень?
Igor
была мысль выкинуть ретурн и сделать
begin, end = flag ? (find(), find()+1) : (begin(), end())
но понял что влечу в уб, да и как-то читаемость не повышается
Berkus
Ivan
Я хоть и не люблю тернарники, но вариант с тернарником лучше. Там один раз вызывается do_stuff, и вообще он короче. Одно не понимаю, зачем внутри цикла ещё раз проверка if(flag) return
Berkus
Berkus
Anatoly
Ivan
То есть do_stuff потенциально изменяет флаг?
Alexander "SonnySlave"
а что приговаривать? нужно сидеть и писать компилятор 😊
Alexander "SonnySlave"
и пока что их компилятор говно
Berkus
Ivan
В смысле, зачем тогда флаг проверять каждую итерацию
Alexander "SonnySlave"
а чей же?
Berkus
м, а чей?
Alexander "SonnySlave"
есть два: clang/c2 и msvc
Berkus
Berkus
воу воу, это никого не волнует
Anatoly
Alexander "SonnySlave"
1) Откуда инфа?
2) А какая мне разница как пользователю?
Berkus
Anatoly
Alexander "SonnySlave"
второе никак не влияет на принадлежность компилятора компании.
Berkus
если так подходить то половина шланга на БЕСПЛАТНОМ аутсорсе
Alexander "SonnySlave"
а первое - пруфца хоть кинь какого-нибудь
Ivan
Berkus
а по этому видно что "сложнааа"
Anatoly
Igor
вообще для полноты картины, такой цикл встречается в двух функциях, и хотя condition одинаковый, do_stuff делает принципиально разные вещи, а код - чужого авторства в ревью-доске
вроде как и хочется предложить вынести какой-то for_all_or_found(bool condition, Func action) + bool do_stuff1(pair<>&); bool do_stuff2(pair<>&);, но присутствует чувство, что начинаю городить огород на пустом месте 9_6
Berkus
лишний огород, лучше do_stuff вынеси в отдельный метод
Igor
Berkus
конечно, но гцц он собирается только под линукс, андроид иос и мак собираются шлангом
Berkus
линукс тоже надо вжухнуть на шланг, но потом
Alexander "SonnySlave"
Дмитрий ⬡
а зачем?
А зачем не? Кажется, он куда более дружелюбен по части сообщений об ошибках, и на максимум оптимизирует так, что вполне может и выиграть. Выигрывает не всегда, но пробовать можно.
Igor
хотеть переехать с 4.4 на trunk( ещё бы это не подразумевало пересборку всех тулсетов под три ARM(
Alexander "SonnySlave"
Danil
Alexander "SonnySlave"
Alexander "SonnySlave"
в большинстве случаев выигрывает gcc
Alexander "SonnySlave"
но надо смотреть под задачу именно
Igor
🐙 Antony
линукс тоже надо вжухнуть на шланг, но потом
Есть проект по переносу ядра линукс на clang https://lwn.net/Articles/734071/
Из плюсов - другие варнинги, другие санитайзеры. Из минусов - пока что clang плохо умеет некоторые фишки GCC и плохо работает с inline asm
Alexander "SonnySlave"
потмоу что бывает, что и шланг шустрее
Danil
Вроде не так давно они были сравнимы, где то один, гле то другой лучше
Berkus
Кирилл
Alexander "SonnySlave"
@berkus ну так зачем на шланг уезжаешь?)
Berkus
Danil
Я бы пересел на шланг ради быстрых компиляшек
Berkus
Berkus
да и сообщения об ошибках в последних гцц весьма достойные
Igor
А ещё в 4.4 нет лямбд
малость озадачился, потом вспомнил, что там где видел у нас лямбды, они использовались под линух с 4.8 😓
Danil
Видеть бы последние гцц, мы скромго сидим на 4.6((
🐙 Antony
Меня больше интресует линуксовое ядро собранное с lto. Пока вроде не собирают. Кто нибудь знает какие проблемы там всплывают (помимо нежелания Линуса)?
🐙 Antony
Berkus
Berkus
еще где-нибудь аналогичная магия с лд скриптами ломается еще
Arseny
О, привет!
Alex
Alexander "SonnySlave"
А хз, не смотрел. Думаю, что куда-то в program files