
Nathan Ridge wrote
GCC 4.5 is in error to allow that. 4.7 does not allow it.
The correct way to use a data member in the lambda is to capture "this", and then access the member via "this->member" inside the lambda.
OK, thanks. This is a problem for implementing ScopeExit using lambdas on C++11 because the following code: struct world { void add_person(person const& a_person) { bool commit = false; persons_.push_back(a_person); SCOPE_EXIT( (&commit) (&persons_) ) { if(!commit) persons_.pop_back(); } commit = true; } private: std::vector<person> persons_; }; Works with the current implementation of ScopeExit that does not use lambdas but it will no longer compile with the implementation of ScopeExit that uses lambdas. Therefore, the lambda implementation of ScopeExit cannot be backward compatible... I will discuss this issue with ScopeExit's main author Alexander Nasonov but this might mean that ScopeExit will never be implemented internally using lambdas, not even on C++11 compilers. Thanks. --Lorenzo -- View this message in context: http://boost.2283326.n4.nabble.com/boost-scope-exit-can-MSVC-lambdas-capture... Sent from the Boost - Dev mailing list archive at Nabble.com.