c++boost::绑定占位符位置

c++ boost::bind placeholder position

本文关键字:位置 占位符 绑定 c++boost      更新时间:2023-10-16
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。有人能告诉我为什么换了这些名额吗??

您有一个打字错误,正在向绑定的函子传递三个参数:

(1,0, 2.0);

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

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