c++ - Can inline lambda initializer capture 'this' pointer? -


can inline member initialization lambda capture , use this pointer?

struct a{   int = 42;   int b = [this](){     return this->a * 4;   }(); }; 

is valid c++11 code (according specification) or gcc extension?

if valid, why have use this-> when referring member a?

is valid c++11 code?

no. lambdas in block scope can have capture lists:

c++11 5.1.2/9 lambda-expression smallest enclosing scope block scope local lambda expression; other lambda-expression shall not have capture-list in lambda-introducer.

so seems gcc extension. (as noted in comments, open issue, might become standard 1 day.)

why have use this-> while referring member a?

you don't, @ least version of gcc i'm using: http://ideone.com/k857vc.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -