【发布时间】:2021-10-13 10:13:06
【问题描述】:
我们如何在c++ lambda 捕获列表中创建一个指针?例如,我们可以创建一个整数变量并使 lambda 有状态:
auto lambda1 = [a = int{ 5 }]() mutable {
a = 3;
}
但是,当我们将 a 更改为指针时,编译器不起作用:
auto lambda2 = [a = void* { nullptr }]() mutable {
a = ...;
}
另一种解决方法是在外面声明一个指针,然后复制它,但这似乎很多余
void* a;
auto lambda3 = [a]() mutable {
a = ...
}
【问题讨论】:
-
a=void*{nullptr}->a=(void*)nullptr虽然我真的怀疑你是否需要这个。你用指针做什么?
标签: c++ c++ pointers lambda initialization c++14