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

Python Kivy ListView: How to delete selected ListItemButton? -

asp.net mvc 4 - A specified Include path is not valid. The EntityType '' does not declare a navigation property with the name '' -