
Powell, Gary wrote:
// PROPOSED CHANGE IN SOME FUTURE PAPER
unsigned long n = std::accumulate( xs.begin(), xs.end(), 0UL, long (long lhs, X const &rhs) // inline fn with no name. { return lhs + rhs.count; } );
Yeah, but do you propose to make local names visible inside the anonymous function, or not? If you do, you open a big can of worms for implementations (recursive nested functions, need I say more?), if you don't, BLL can still do things that anonymous functions can not. Anonymous functors could help some, but their syntax won't be quite as compact as your example above.
I'd asume it can also handle nested anonymous functions? Say, for example, I wish to print all the contents of a 2D vector-of-vector: std::vector<std::vector<int> vv; std::for_each(vv.begin(), vv.end(), void (vector<int> const& v) { std::for_each(v.begin(), v.end(), void (int x) { cout << x << endl; } } ); Now, to complicate matters, what if I wish to access v in the inner anonymous function? Can you also do that? Example: std::for_each(vv.begin(), vv.end(), void (vector<int> const& v) { std::for_each(v.begin(), v.end(), void (int x) { cout << x << endl; do_fomething_with(v); // <<--here } } ); Cheers, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net