Пора пречитывать на ночь Страуструпа
Mar. 3rd, 2011 06:47 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сегодня первый раз наткнулся в проекте на код, который не смог с ходу осознать без подгляда в книжку. Бустовская лямбда штука очень прикольная и позволяет конструировать разные велосипеды с турбонаддувом вроде таких:
typedef std::vector< int > TV; TV v; ... TV::iterator it = (std::find_if(v.begin(), v.end(), _1 > 5));
Все логично и понятно пока в контейнере простые типы. Если там какой-нибудь класс и надо добраться до членов, то уже:
typedef std::pair< int, std::string> TP; typedef std::vector< TP > TV; TV v; ... TV::iterator it = (std::find_if(v.begin(), v.end(), (&(_1)->*&TP::first) > 5));
И т.д.