Załóżmy, że mam funkcja, która zajmuje pewną formę predykatu:Korzystanie impuls aby utworzyć funkcję lambda, która zawsze zwraca true
void Foo(boost::function<bool(int,int,int)> predicate);
Jeśli chcę nazywać go z orzeczeniem, które zawsze zwraca wartość true, mogę zdefiniować funkcja pomocnika:
bool AlwaysTrue(int, int, int) { return true; }
...
Foo(boost::bind(AlwaysTrue));
Ale czy jest tak, aby wywołać tę funkcję (ewentualnie przy użyciu boost :: lambda) bez konieczności definiowania oddzielną funkcję?
[Edit: Zapomniałem powiedzieć: Nie mogę korzystać z C++ 0x]
Sam się obejrzałem i natknąłem się na boost :: lambda :: identity ... ktoś zna różnicę? Obaj wydają się działać. – stusmith
Identyfikacja wydaje się być nieudokumentowaną klasą szablonów, używaną w implementacji stałej (i boost :: lambda :: var). Podobnie jak std :: mem_fun_t jest klasą, którą funkcja pomocnicza std :: mem_fun tworzy i zwraca, z tą różnicą, że mem_fun_t jest udokumentowane, a tożsamość nie. Biorąc to pod uwagę, polecam używanie var i constant zamiast tego. – SCFrench