Boost logo

Boost :

From: Max Motovilov (max_at_[hidden])
Date: 2004-03-03 18:50:44

"Powell, Gary" <powellg_at_[hidden]> wrote in message

> 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...


Boost list run by bdawes at, gregod at, cpdaniel at, john at