gpt4 book ai didi

c++ - 将 lambda 函数转换为函数指针是否安全?

转载 作者:IT老高 更新时间:2023-10-28 21:38:48 26 4
gpt4 key购买 nike

我有这个代码:

void foo(void (*bar)()) {
bar();
}

int main() {
foo([] {
int x = 2;
});
}

但是,我担心这会遭受同样的命运:

struct X { int i; };

void foo(X* x) {
x->i = 2;
}

int main() {
foo(&X());
}

获取局部变量的地址。

第一个例子完全安全吗?

最佳答案

捕获 nothing 的 lambda 可以隐式转换为具有相同参数列表和返回类型的函数指针。只有无捕获的 lambda 才能做到这一点;如果它捕捉到任何东西,那么它们就不能。

除非您使用的是 VS2010,它没有实现标准的那部分,因为在他们编写编译器时它还不存在。

关于c++ - 将 lambda 函数转换为函数指针是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com