
Shannon Stewman wrote:
On Wed, Mar 03, 2004 at 01:34:50PM -0800, Powell, Gary wrote:
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; } );
This seems to cast out the type inference present in BLL. I think that's one of the nicer concepts in the lambda library, and a real boon to programming. In my limited experience with SML/OCaml, type inference seems a better, safer, and more convenient way to program, albeit requiring a lot more compiler intelligence. As BLL shows, though, this is quite possible, though perhaps limited, with existing C++.
I agree. In many cases, type inference is a necessity since you do not know the type of the arguments before hand. Take a simple Spirit parser, for example: std::string s; identifier = (+alpha_p) [ ref(s) = construct_<std::string>(arg1, arg2) ] ; At grammar declaration time, we don't (can't) know the exact type of arg1 and arg2. We simply know that they are iterators. Cheers, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net