可以内联成员初始化lambda捕获并使用this指针吗?
struct A{
int a = 42;
int b = [this](){
return this->a * 4;
}();
};
Run Code Online (Sandbox Code Playgroud)
它是有效的C++ 11代码(根据规范)还是仅仅是GCC扩展?
如果它有效,为什么我this->在提到会员时必须使用a?
Mik*_*our 16
它是有效的c ++ 11代码吗?
不可以.块范围内只有lambdas可以有捕获列表:
C++ 11 5.1.2/9 lambda表达式是一个局部lambda表达式,其最小的封闭范围是块作用域.任何其他lambda-expression在其lambda-introducer中都不应该有一个capture-list.
所以这似乎是GCC扩展.(正如评论中所指出的,这是一个悬而未决的问题,所以很可能有一天成为标准问题.)
为什么我
this->在提到会员时必须使用?
你没有,至少我正在使用的GCC版本:http://ideone.com/K857VC.
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |