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

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

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

15 ответов

5 просмотров

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, до сих пор не привык

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
13
Карта сайта