Posted Dec 8, 2005 10:03 UTC (Thu) by pkolloch
Parent article: The Boost C++ Libraries
One of the very impressive features are lambda functions (IMHO):
for_each(a.begin(), a.end(), std::cout << _1 << ' ');
"std::cout << _1 << ' '" defines lambda function object taking one parameter.
Unfortunately, one cannot totally freely define those. Correct me, if I am wrong, but the following should not be possible:
for_each(a.begin(), a.end(), std::cout << "blupps: " << _1 << ' ');
The "<<" is evaluated from left to right. That means that std:cout << "blupps: " is evaluated before the special magic _1 can interfere and "blupps: " is printed immediately. (there is some special function to make this possible, I do not remember)
Functional conditional statements like "if_then" etc. are also provided for usage inside of lambda functions.
to post comments)