gpt4 book ai didi

c++ - 与 lambdas 相比,std::bind 仍然有用吗?

转载 作者:IT老高 更新时间:2023-10-28 22:35:06 26 4
gpt4 key购买 nike

Possible Duplicate:
Bind Vs Lambda?

由于 lambda 已获得广泛支持,我对 std::bind 的使用已降至 0。

std::bind 有没有特别适合 lambda 函数的问题?

一旦添加了 lambda,是否有令人信服的理由将 std::bind 保留在标准中?

最佳答案

您可以按值或按引用捕获,问题是按值捕获实际上意味着“通过复制捕获”。这是一个只移动类型的显示停止器。所以你不能使用 lambda 来执行以下操作:

struct foo { void bar() {} };

std::unique_ptr<foo> f { new foo };
auto bound = std::bind(&foo::bar, std::move(f));
static_assert( std::is_move_constructible<decltype(bound)>::value, "" );
bound();

IIRC 标准委员会曾短暂考虑允许在 lambda 捕获列表中使用任意表达式来解决此问题(可能类似于 [std::move(f)] { return f.bar(); } ),但我不认为有一个可靠的提议,而且 C++11 已经迟到了。

这和对 lambda 的单态行为的限制对我来说是个交易破坏者。

关于c++ - 与 lambdas 相比,std::bind 仍然有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088494/

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