之前,你扔烂番茄为什么lambda表达式的捕获列表不能使用结构化绑定分解
我知道的λ分解的实际应用目前仅限 作为一个将无法找到替代故障友好的方式来检查 隐藏在分解变量中的lambda捕获的数量。这只是一个理论问题,因为我没有找到任何涵盖捕获成员变量访问修饰符的标准部分。
例
int main() {
int a;
auto [x] = [a]{};
static_cast<void>(a);
static_cast<void>(x);
return 0;
}
标准参考
标准的部分约lambda capture相当长,所以我可能会错过相关的片段。我注意到的是,强调与捕获相对应的非静态成员必须是未命名的。
我真的不明白'auto [x] = [a] {};'的用途是什么。你想在那里做什么? 'x'会是什么? –
@Someprogrammerdude我认为lambda表达式是一个包含来自lambda捕获的状态的内联类定义。普通结构的状态可以绑定到结构绑定变量中。我只是好奇,有没有一种方法可以在这个意义上使用lambda作为普通结构。 –
@Someprogrammerdude我认为'auto [x] = [a] {};''x'会对应'a'。 –