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
что это за уебанская стрелочка в няшном коде?
я тоже считаю, что лучше бы было:
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);
этот вариант видел в бусте
Щто за уебанская автозамена стрелочек?
auto message не катит, к сожалению.
А про последний поподробнее.
дерьмо...то был не find_if, а for_each. Да и то без bind не хочет работать. Да и без boost::lambda::var будет ли работать, хз. Короче, придётся "хавать", что дают. Может, правда плюсоёбы — любители питона из http://cpp-next.com/ добьются чего-нибудь, и к 2013 году впилят что-нибудь годное.
Есть ещё вариант написать свой плагин для гцц... но это надо знать питон (ведь на нём же плагины для гцц пишутся?)
кстати, разве сложно дедуцировать тип передаваемого/ых в лямбду параметра/ов ? value_type, в нём обязан быть,а дальше, исходя из константности итератора, соответственно добавлять константность к передаваемому параметру. Так что, имхо, auto туда могли бы впилить.
Получается слишком частный случай. Я охотно понимаю, почему чуваки из Стандартизации не захотели это впилить.
В принципе, []() у лямбды можно было вообще убрать в твоём случае. Потому и можно было использовать {как это по-русски?}place_holder. Фактически лямбда превращается в ленивый statement. И return можно было бы убрать и получилось бы а-ля C99. Всего лишь частный случай синтаксиса, но всё бы стало гораздо проще и удобнее. Правда похоже на пёрлец.
Можно было бы. Да. Но плюсы, как всегда, дерьмо.
Впрочем, было бы похоже на х-ль :3