c++ - explain this code with decltype in it -


([] () -> decltype(std::cout << "hello") {     return std::cout << "hello"; }()) << ", world!"; 

prints hello, world!.

i don't understand what's going on here. can explain me in simple terms?

([] () -> decltype(std::cout << "hello") 

this creates lambda (in-place function) same return type expression std::cout << "hello" has - that's std::ostream&. [] starts lambda, () empty parameter list, -> preceeds return type, , decltype(x) equivalent type of expression x. function body:

{     return std::cout << "hello"; } 

then function called... outputs "hello" , returns stream....

 ()) 

and finally, returned stream, little more text sent...

 << ", world!"; 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -