以下代码显示使用boost :: bind时复制通过引用传递的参数。有没有办法防止复制而不诉诸指针(我目前用作解决方法)? (用gcc 4.4.3测试)
#include <iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>
void function1(int& x)
{
std::cout << "function1 &x: " << &x << std::endl;
}
int main()
{
int y = 0;
std::cout << "main &y: " << &y << std::endl;
boost::function<void()> f = boost::bind(function1, y);
f();
}
答案 0 :(得分:7)
你应该使用boost :: ref来传递对boost bind的引用。
boost::function<void()> f = boost::bind(function1, boost::ref(y));