@ProCxx

Страница 574 из 2477
Sergey
12.02.2017
23:50:23
или мне на каждый такой чих отдельную функцию писать, причем она будет "типа с переменным числом аргументов", хотя на самом деле - со всполне определенным

Alex Фэils?︙
12.02.2017
23:50:41
Шаблон можно написать

Viktor
12.02.2017
23:51:02
зы int f(std::initialize_list l){ int sum_len = 0; for(auto arg: l) { sum += arg.len(); } }

Andre
12.02.2017
23:51:09
Reindex.. please wait

Google
Alex Фэils?︙
12.02.2017
23:51:31
template <typename Functor<Args...>, Args...>

Sergey
12.02.2017
23:51:37
а если там не "все просуммировать", а нормальное выражение

(a.length + b.length*max(c.length,0.f))

Alex Фэils?︙
12.02.2017
23:53:46
А ты уверен, что тут ленгтх можно вынести?

Andre
12.02.2017
23:53:59
Reindex.. please wait

Sergey
12.02.2017
23:54:26
А ты уверен, что тут ленгтх можно вынести?
я не уверен, что моя хотелка в принципе реализуема средствами С++

Reindex.. please wait
норм вообще. стековая машина на коленке

Alex Фэils?︙
12.02.2017
23:54:59
это норма

Паттерн "Интерпретатор" отдалкнно напоминает

Andre
12.02.2017
23:55:38
Reindex.. please wait

Sergey
12.02.2017
23:56:09
да, но применять-то это хочется для "настоящих" выражений. там такая запись только все запутает вкрай

уж проще тогда аккуратным элайнментом показать однородности в выражении

Google
Alex Фэils?︙
12.02.2017
23:57:58
Дык можно ж сделать стековуюцепочку для операторов

Sergey
12.02.2017
23:58:18
ну вы издеваетесь

Alex Фэils?︙
12.02.2017
23:59:41
утречком мб @ AndreiKr что подскажет. Иль Влад @ isenbaev

Stanislav
13.02.2017
00:03:52
и вот вынести как-то этот .length "за скобки"
поясни что ты хочешь получить то :)

Sergey
13.02.2017
00:04:19
еще раз

есть некие "однородные" вычисления. в ходе них, от каждого участвующего в вычислениях объекта, зовется один и тот же метод

допустим даже, что объекты все одого типа

как-то можно упростить запись такого выражения? записать этот метод 1 раз, указав (как-то), что он применяется ко всем участвующим объектам

Vladislav
13.02.2017
00:12:23
Можно прокси-объект сделать, который вернет оператор + для классов
Alex дело говорит, перегрузи операторы с возвратом шаблонных прокси. Всякие либы для линейной алгебры используют такой подход, можно загуглить доп. инфу по запросу "expression templates"

Челодой
13.02.2017
04:36:12
Обратная польская запись, да
Спасибо, за наводку, помогло)

Reindex.. please wait

Alex Фэils?︙
13.02.2017
05:17:26
Reindex.. please wait
Reindex.. please wait

Andrey
13.02.2017
06:27:54
Reindex.. please wait
Reindex.. please wait

Reindex.. please wait
Reindex.. please wait

Челодой
13.02.2017
06:33:56
Reindex.. please wait
Reindex.. please wait

Reindex.. please wait

Andrey
13.02.2017
06:35:04
Reindex.. please wait
Reindex.. please wait

Reindex.. please wait
Reindex.. please wait

Челодой
13.02.2017
06:41:52
Reindex.. please wait
Reindex.. please wait

Andrey
13.02.2017
06:42:10
Reindex.. please wait
Reindex.. please wait

Google
Andrey
13.02.2017
06:42:19
Reindex.. please wait

Челодой
13.02.2017
06:43:25
Reindex.. please wait

Andrei
13.02.2017
08:05:21
и вот вынести как-то этот .length "за скобки"
Лол. Обернуть в монаду на самом деле.

Но в плюсах для этого синтаксис плоховат.

Для штуки из 3-4 частей я бы не стал. Если же что-то повсеместсно используемое написал бы

Berkus
13.02.2017
08:10:11
Лол. Обернуть в монаду на самом деле.
ну по идее, предложенный выше Proxy и будет той монадой...

Andrei
13.02.2017
08:14:09
Не совсем понятно, как + поднять в монадические вычисления в плюсах.

liftM2 будет выглядеть жутковато

на шаблонах

Stanislav
13.02.2017
08:48:52
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 Фэils?︙
13.02.2017
08:49:14
Просто not

Stanislav
13.02.2017
08:57:33
Просто not
std::not ? :)

Stanislav
13.02.2017
08:57:45
или ты про кейворд? )

Alex Фэils?︙
13.02.2017
08:57:59
Ща еще гляну, на всяк случай

Stanislav
13.02.2017
08:58:44
not_fn

нашел

not_fn is intended to replace the C++03-era negators std::not1 and std::not2.

Steven
13.02.2017
09:24:09
Ребятки, а как вы к наследованию относитесь?

Berkus
13.02.2017
09:26:01
плохо

Google
Steven
13.02.2017
09:26:25
Композиция?

Berkus
13.02.2017
09:26:45
ага

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

Admin
ERROR: S client not available

Andre
13.02.2017
09:27:31
Reindex.. please wait

Berkus
13.02.2017
09:27:48
ну или там no sex, no future

Steven
13.02.2017
09:28:05
Спасибо)

Friedrich
13.02.2017
09:35:08
Только множественное наследование спасёт отца русской демократии, только хардкор.

Friedrich
13.02.2017
09:36:13
А такое вообще бывает?

Andre
13.02.2017
09:36:26
Reindex.. please wait

Friedrich
13.02.2017
09:36:52
К нам в морг пока таких патологий не завозили, надо будет покопаться.

Stanislav
13.02.2017
09:42:32
мне кажется ты каналом ошибся

Vitaliy
13.02.2017
09:44:10
Отчасти правда, я пишу на других ЯП. Но на плюсах тоже, в том числе с шаблонами.

Просто это всё навевает какой-то благовейный трепет

Aidar
13.02.2017
09:44:55
А бывают без шаблонов?

Кстати насколько валидно юзать ensble_if вместо ассерта для ограничения параметров класса

Google
Vitaliy
13.02.2017
09:48:50
А бывают без шаблонов?
В NDK очень часто. И чаще всего без исключений, потому что это добавляет существенно к размеру либы

Aidar
13.02.2017
09:49:25
По-моему джава сама добавляет нехило

Stanislav
13.02.2017
09:50:22
Я-то думал, ничего хуже упоротого синтаксиса указателей быть не может
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) ) ) ); }

?

Andre
13.02.2017
09:50:33
Reindex.. please wait

Aidar
13.02.2017
09:50:54
Лямбды? Не не слышал

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) ) ) ); }

?

Vitaliy
13.02.2017
09:51:26
JVM код это набор шестнадцатеричных опткодов JVM. Мне кажется, вряд ли тут размер больше, чем у экзешника, даже меньше, скорее всего — комманд в опткодах меньше, чем в ассемблерах, заголовков и прочего нет, шаблоны компилируются в касты, а не в новые классы.

Stanislav
13.02.2017
09:51:34
Reindex.. please wait
енамы то за шо?

Vitaliy
13.02.2017
09:51:39
С другой стороны, неиспользуемый код по умолчанию не вырезается

Reindex.. please wait
В Си енамы это просто инты, вроде

Страница 574 из 2477