
"Powell, Gary" <powellg@amazon.com> wrote in message news:16D81990DBE42642A8CA977A55FF116A0BD398@ex-mail-sea-02.ant.amazon.com...
In my plan, variables would have same scope in a function as they do now. i.e. variables local to std::accumulate are not visible in the anonymous fn.
That's not what I was asking about. Will the anonymous function see the names visible in the scope of its definition? unsigned long foo (vector<X> const &xs) { unsigned y = 0; unsigned long n = std::accumulate( xs.begin(), xs.end(), 0UL, unsigned long (unsigned long lhs, X const &rhs) // inline fn with no name. { return ++y * (lhs + rhs.count); } ); return n; } A slightly brain-dead example, but it illustrates my question. As I understand it, one can easily include references to local variables in a lambda expression using ref(). Since current language does not allow us to define one function body inside another, we can't really take "as it is now" for a guideline. Nested blocks OTOH do not prevent access to outer local variables, but you can't call nested blocks recursively... ...Max...