Executes the body of the lambda-expression, when invoked. When accessing a variable, accesses its captured copy (for the entities captured by copy), or the original object (for the entities captured by reference). Unless the keyword mutable was used in the lambda-expression, the function-call ...
For the purpose of name lookup, determining the type and value of the this pointer and for accessing non-static class members, the body of the closure type's operator() is considered in the context of the lambda expression. struct X { int x, y; int operator()(int); void f() { ...
unevaluated-constext, IMO it seems there exists no reason we shall perform such instantiation (since such an id-expression possibly references to an immediate function template specialization though, the immediacy would not propagate up. I'm not sure, maybe there's an ambiguity in core language)...
for a call like `($f e)’, the passed-in expression`e’ (bound to `x’) will escape from the environment it should be evaluated if it ever needs to, namely in `env’. Indeed, `e’ may be evaluated in the body of the operative of `$f’ (in an explicit evaluation context) whi...
expression. For example, we can take the expression(+ 1 x)and embed it anywhere we want, allowing our expression to access a binding namedxin the surrounding code. We then say that the code hascapturedour free variable. After the free variables in an expression are captured, as in the ...
But freedom doesn't refer to what the expression can do, rather what we, as programmers, can do with the expression. For example, we can take the expression (+ 1 x) and embed it anywhere we want, allowing our expression to access a binding named x in the surrounding code. We then ...