为什么输出为0?
#include <boost/bind.hpp>
#include <vector>
#include <iostream>
using namespace std;
void f2(vector<int> &h)
{
h.clear();
h.push_back(0);
}
void f1(vector<int> &h)
{
boost::bind(f2, boost::ref(h));
}
int main()
{
vector<int> h;
f1(h);
cout << h.size() << "\n";
}
我需要它为1,由于某种原因h不会被修改。
答案 0 :(得分:4)
boost/std::bind()
仅构造函数对象。你仍然需要调用它,以便执行任何代码。
要获得1
的输出,请替换
boost::bind(f2, boost::ref(h));
与
boost::bind(f2, boost::ref(h))();