Sergey
уж проще тогда аккуратным элайнментом показать однородности в выражении
🦥Alex Fails
Дык можно ж сделать стековуюцепочку для операторов
Sergey
Sergey
ну вы издеваетесь
🦥Alex Fails
утречком мб @ AndreiKr что подскажет. Иль Влад @ isenbaev
Stanislav
и вот вынести как-то этот .length "за скобки"
поясни что ты хочешь получить то :)
Sergey
еще раз
Sergey
есть некие "однородные" вычисления. в ходе них, от каждого участвующего в вычислениях объекта, зовется один и тот же метод
Sergey
допустим даже, что объекты все одого типа
Sergey
как-то можно упростить запись такого выражения? записать этот метод 1 раз, указав (как-то), что он применяется ко всем участвующим объектам
Vladislav
Можно прокси-объект сделать, который вернет оператор + для классов
Alex дело говорит, перегрузи операторы с возвратом шаблонных прокси. Всякие либы для линейной алгебры используют такой подход, можно загуглить доп. инфу по запросу "expression templates"
Doston
Обратная польская запись, да
Спасибо, за наводку, помогло)
Andrei
и вот вынести как-то этот .length "за скобки"
Лол. Обернуть в монаду на самом деле.
Andrei
Но в плюсах для этого синтаксис плоховат.
Andrei
Для штуки из 3-4 частей я бы не стал. Если же что-то повсеместсно используемое написал бы
Berkus
Лол. Обернуть в монаду на самом деле.
ну по идее, предложенный выше Proxy и будет той монадой...
Andrei
Не совсем понятно, как + поднять в монадические вычисления в плюсах.
Andrei
liftM2 будет выглядеть жутковато
Andrei
на шаблонах
Stanislav
template< class Predicate > std::unary_negate<Predicate> not1(const Predicate& pred); (until C++14) template< class Predicate > constexpr std::unary_negate<Predicate> not1(const Predicate& pred); (since C++14) (deprecated in C++17) господа, а чем заменили или самому это теперь писать?
🦥Alex Fails
Просто not
Stanislav
Просто not
std::not ? :)
Stanislav
или ты про кейворд? )
🦥Alex Fails
🦥Alex Fails
Ща еще гляну, на всяк случай
Stanislav
not_fn
Stanislav
нашел
Stanislav
not_fn is intended to replace the C++03-era negators std::not1 and std::not2.
Anonymous
Ребятки, а как вы к наследованию относитесь?
Berkus
плохо
Anonymous
Композиция?
Berkus
ага
Berkus
нормальный для плюсов способ это композиция, а наследование обычно в широких плоских иерархиях работает - визиторы там, и все такое
Berkus
ну или там no sex, no future
Anonymous
Спасибо)
Dr. Friedrich
Только множественное наследование спасёт отца русской демократии, только хардкор.
Dr. Friedrich
А такое вообще бывает?
Dr. Friedrich
К нам в морг пока таких патологий не завозили, надо будет покопаться.
Vitaliy
Я-то думал, ничего хуже упоротого синтаксиса указателей быть не может
Stanislav
мне кажется ты каналом ошибся
Vitaliy
Отчасти правда, я пишу на других ЯП. Но на плюсах тоже, в том числе с шаблонами.
Vitaliy
Просто это всё навевает какой-то благовейный трепет
Aidar
А бывают без шаблонов?
Aidar
Кстати насколько валидно юзать ensble_if вместо ассерта для ограничения параметров класса
Vitaliy
А бывают без шаблонов?
В NDK очень часто. И чаще всего без исключений, потому что это добавляет существенно к размеру либы
Aidar
По-моему джава сама добавляет нехило
Stanislav
Я-то думал, ничего хуже упоротого синтаксиса указателей быть не может
static void ltrim(std::string &s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1( std::function<int(int)>((int(*)(int))std::isspace) ) ) ); }
Stanislav
😜
Aidar
Лямбды? Не не слышал
Aidar
static void ltrim(std::string &s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1( std::function<int(int)>((int(*)(int))std::isspace) ) ) ); }
Aidar
😜
Vitaliy
JVM код это набор шестнадцатеричных опткодов JVM. Мне кажется, вряд ли тут размер больше, чем у экзешника, даже меньше, скорее всего — комманд в опткодах меньше, чем в ассемблерах, заголовков и прочего нет, шаблоны компилируются в касты, а не в новые классы.
Stanislav
енамы то за шо?
Vitaliy
С другой стороны, неиспользуемый код по умолчанию не вырезается
Vitaliy
В Си енамы это просто инты, вроде
Vitaliy
С проверками при компиляции
Stanislav
Aidar
Это синтаксический сахар онли
Vitaliy
Ладно, вопрос по делу. Почему std::stringstream считается медленным? Он на каждый вызов строку новую аллоцирует и sprintf делает?
Aidar
Нет, он медленнее чем вобще не юзать его
🦥Alex Fails
И локаль дергает
Vitaliy
Понял
Berkus
и локаль вот еще, и iomanip
Vitaliy
Он мне очень понравился по синтаксису, но хочется чего-то побыстрее и легче. Лучше не в виде либы, а в виде исходника, потому что в NDK либы кросс-компилировать надо
🦥Alex Fails
Полухин на конфе в яндексе протэто еще говорил. Никак не могу транскрибировть
Aidar
Он не долгий по сравнению с джабой
Berkus
вообще есть fmt самая быстрая вроде либа для форматированного вывода
Vitaliy
не парься. мы логи через него пишем и никто не умер
На Андроиде он ещё тянет за собой зависимости и это +2 мб к сошке
Aidar
Отключить синхронизацию с stdio? Не не слышал
Berkus
2мб в 2017 году, я даже не смеюсь
Vitaliy
Да можно свой написать поверх принтф
Не хочу велосипед писать, если честно, особенно в С++ — можно легко напороться на грабли
Berkus
fmt