Using member variable in lambda capture list inside a member function

前端 未结 4 1177
情歌与酒
情歌与酒 2020-11-27 11:37

The following code compiles with gcc 4.5.1 but not with VS2010 SP1:

#include 
#include 
#include 
#include 

        
4条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-27 12:23

    Summary of the alternatives:

    capture this:

    auto lambda = [this](){};
    

    use a local reference to the member:

    auto& tmp = grid;
    auto lambda = [ tmp](){}; // capture grid by (a single) copy
    auto lambda = [&tmp](){}; // capture grid by ref
    

    C++14:

    auto lambda = [ grid = grid](){}; // capture grid by copy
    auto lambda = [&grid = grid](){}; // capture grid by ref
    

    example: https://godbolt.org/g/dEKVGD

提交回复
热议问题