gpt4 book ai didi

c++ - 与 C++11 lambda 相比,bind() 是否有任何优势(除了兼容性)?

转载 作者:IT老高 更新时间:2023-10-28 22:36:51 27 4
gpt4 key购买 nike

我正在考虑将我的代码迁移到使用 C++11 风格的 lambda,而不是到处使用 bind。但我不确定这是否是个好主意。

是否使用例如boost::lambda(或 boost::phoenix)比 C++11 风格的 lambda 有什么实际优势吗?

改用 lambdas 是个好主意吗?我应该迁移我的代码吗?

最佳答案

主要优点是多态仿函数。目前,C++11 lambda 是单态的,即它们只接受单个参数类型,而 bind() 允许您创建接受任何参数类型的仿函数,只要绑定(bind)仿函数可以用它调用.

#include <functional>

struct X{
template<class T, class U>
void operator()(T, U) const{}
};

int main(){
X x;
auto l_with_5 = [x](int v){ return x(v, 5); };
auto b_with_5 = std::bind(x, std::placeholders::_1, 5);
l(4);
b("hi"); // can't do that with C++11 lambdas
}

关于c++ - 与 C++11 lambda 相比,bind() 是否有任何优势(除了兼容性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062672/

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