0xd34df00d 09.11.2011 00:14 Azoth_primary

Написал свою первую действительно нужную в типа-продакшене лямбду:
vmime::string id = ...;
auto pos = std::find_if (messages.begin (), messages.end (), [id] (const vmime::ref<vmime::net::message>& message) { return message→getUniqueId () == id; });

Проблевался.

Recommended by: @dorfe
1. emu 09.11.2011 02:19 sylph

что это за уебанская стрелочка в няшном коде?

2. m4n71k0r 09.11.2011 05:31

я тоже считаю, что лучше бы было:

auto pos = std::find_if (messages.begin (), messages.end (), [id] (auto message) { return message→getUniqueId () == id; });

а ещё лучше бы:

auto pos = std::find_if (messages.begin (), messages.end (), { return _1→getUniqueId () == id; });

или просто:

auto pos = std::find_if (messages.begin (), messages.end (), _1→getUniqueId () == id);

этот вариант видел в бусте

3. m4n71k0r 09.11.2011 05:32

Щто за уебанская автозамена стрелочек?

4. 0xd34df00dm4n71k0r /2 09.11.2011 09:50 Azoth_primary

auto message не катит, к сожалению.
А про последний поподробнее.

5. m4n71k0r0xd34df00d /4 09.11.2011 11:17

дерьмо...то был не find_if, а for_each. Да и то без bind не хочет работать. Да и без boost::lambda::var будет ли работать, хз. Короче, придётся "хавать", что дают. Может, правда плюсоёбы — любители питона из http://cpp-next.com/ добьются чего-нибудь, и к 2013 году впилят что-нибудь годное.

Есть ещё вариант написать свой плагин для гцц... но это надо знать питон (ведь на нём же плагины для гцц пишутся?)

6. m4n71k0r0xd34df00d /4 09.11.2011 11:26

кстати, разве сложно дедуцировать тип передаваемого/ых в лямбду параметра/ов ? value_type, в нём обязан быть,а дальше, исходя из константности итератора, соответственно добавлять константность к передаваемому параметру. Так что, имхо, auto туда могли бы впилить.

7. 0xd34df00dm4n71k0r /6 09.11.2011 11:34 Azoth_primary

Получается слишком частный случай. Я охотно понимаю, почему чуваки из Стандартизации не захотели это впилить.

8. m4n71k0r0xd34df00d /7 09.11.2011 11:40

В принципе, []() у лямбды можно было вообще убрать в твоём случае. Потому и можно было использовать {как это по-русски?}place_holder. Фактически лямбда превращается в ленивый statement. И return можно было бы убрать и получилось бы а-ля C99. Всего лишь частный случай синтаксиса, но всё бы стало гораздо проще и удобнее. Правда похоже на пёрлец.

9. 0xd34df00dm4n71k0r /8 09.11.2011 11:43 Azoth_primary

Можно было бы. Да. Но плюсы, как всегда, дерьмо.
Впрочем, было бы похоже на х-ль :3

Do you really want to delete ?