我发现this
在lambda 中捕获的示例显式使用了它。例如:
capturecomplete = [this](){this->calstage1done();};
但是似乎也可以隐式使用它。例如:
capturecomplete = [this](){calstage1done();};
我在g ++中对此进行了测试,并对其进行了编译。
这是标准的C ++吗?(如果可以,是哪个版本),还是某种扩展形式?
我可以看到这一点,但与此同时,对于应该是一个简单的任务而言,它似乎太冗长了。
—
–plugwash
我记得MSVC(也许只有2015年)
—
Flamefire
this
在lambda中捕获和使用它时也存在问题,这也可能是明确使用它的原因
@plugwash:开发人员通常总是很懒惰,并且希望将事情减至最少,而语言设计师也是如此。但是,通常需要冗长才能解决歧义,在这里就是这种情况。
—
扁平的
this->
显式使用是有可能的,这是为了确保显式使用显式捕获的值。注意那[](){ calstage1done(); }
是不合法的,因为this
不会被捕获;但拍摄时this
明确地说,这是令人惊讶的功能身体出现一目了然没有实际使用捕捉值:[this](){ calstage1done(); }
。