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

Можно ли [](const string & a) { return a.empty(); }

записать короче? &string::empty, как я понимаю, принимать может только указатель, а мне нужен предикат, который можно вставить в std-совместимую функцию типа (псевдокод) any_string_empty(strings) = any_of(strings, &string::empty)

15 ответов

29 просмотров

mem_fn? Не то чтобы супер экономия по сравнению с лямбдой конечно

Cheese-Syrowiecki Автор вопроса
Denis P
mem_fn? Не то чтобы супер экономия по сравнению с ...

кажется, что лямбда — тяжёлая синтаксическая конструкция, затрудняет читаемость; вот "стрелочный" синтаксис смотрелся бы гораздо легче

Cheese Syrowiecki
кажется, что лямбда — тяжёлая синтаксическая конст...

Он бы имел смысл если эта самая лямбдя будет в одну строку

Cheese-Syrowiecki Автор вопроса
Andrey Electron
А что там тяжелого то.

1. список захватов 2. список аргументов с типами 3. фигурные скобки 4. return 5. точка с запятой

Cheese-Syrowiecki Автор вопроса
Vladislav Vasil'ev
Он бы имел смысл если эта самая лямбдя будет в одн...

[](const string & arg) { return arg.empty(); } помещается в одну строку. в чём проблема?

Cheese Syrowiecki
1. список захватов 2. список аргументов с типами 3...

Последний тематический холивар был две недели назад: можете ознакомиться =)

Теоретически должно быть можно, в ranges помнится всяко продвигали pointer to members в качестве projection, не вижу причин чтобы оно не работало. Хотя иногда и не работает: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94973

Dmitry Sokolov
Теоретически должно быть можно, в ranges помнится ...

Хотя да, Лававей прав, если бы было any_of<&string::empty>, оно бы заоптимизировалось. А так оно порождает функцию, параметром шаблона является указатель на любую функцию string, которая возвращает bool. А значит это всегда call, оно не инлайнится. Хм, а это значит и в projection использовать pointer to members такое себе.

Dmitry Sokolov
Хотя да, Лававей прав, если бы было any_of<&string...

Но можно с nttp написать такую вспомогашку, типа any_of(..., my:: projection<&string::empty>())

Cheese Syrowiecki
кажется, что лямбда — тяжёлая синтаксическая конст...

Тебе кажется, очень быстро привыкаешь, и потом лямбды в других языках кажутся обрезками

Cheese-Syrowiecki Автор вопроса
Jokhar Ali
Тебе кажется, очень быстро привыкаешь, и потом лям...

я профессионально пишу на С++ с 2006, до сих пор не привык

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

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

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