gpt4 book ai didi

C++ boost::bind 占位符位置

转载 作者:行者123 更新时间:2023-11-28 06:11:51 24 4
gpt4 key购买 nike

using namespace std;

double func(double a, double b)
{
return a - b;
}

int main()
{
double result = (boost::bind(&func, _1, _2))(1,0, 2.0);
cout << "a: " << result << endl;

result = (boost::bind(&func, _2, _1))(1,0, 2.0);
cout << "b: " << result << endl;

return 0;
}

输出:

a: 1

b: -1

我认为这是最简单的 boost::bind 示例。但它的行为并不像我预期的那样奇怪。

我使用的是 boost_1.58_0,gcc 4.8.4。谁能告诉我为什么这些占位符被切换了?

最佳答案

你有一个错字,将三个参数传递给绑定(bind)的仿函数:

(1,0, 2.0);

这会将 1 替换为 _1 占位符,将 0 替换为 _2 占位符,并忽略第三个参数,因此 func 运行 1 - 0,即 1

对于第二次调用,您传递相同的参数,但它们以不同的顺序传递给包装仿函数,因此 func 运行 0 - 1,即 -1.

关于C++ boost::bind 占位符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117116/

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