C++ boost::bind可以在不复制的情况下与引用一起使用吗?

C++ boost::bind可以在不复制的情况下与引用一起使用吗?,c++,boost,C++,Boost,下面的代码显示在使用boost::bind时,通过引用传递的参数被复制。有没有一种方法可以在不使用指针的情况下防止复制(我目前使用指针作为解决方法)?(根据gcc 4.4.3进行测试) #包括 #包括 #包括 无效函数1(int&x) { std::cout您应该使用boost::ref将引用传递给boost绑定 boost::function<void()> f = boost::bind(function1, boost::ref(y)); boost::function f=

下面的代码显示在使用boost::bind时,通过引用传递的参数被复制。有没有一种方法可以在不使用指针的情况下防止复制(我目前使用指针作为解决方法)?(根据gcc 4.4.3进行测试)

#包括
#包括
#包括
无效函数1(int&x)
{

std::cout您应该使用boost::ref将引用传递给boost绑定

boost::function<void()> f = boost::bind(function1, boost::ref(y));
boost::function f=boost::bind(function1,boost::ref(y));

您应该使用boost::ref将引用传递给boost绑定

boost::function<void()> f = boost::bind(function1, boost::ref(y));
boost::function f=boost::bind(function1,boost::ref(y));

谢谢,这很有帮助。不幸的是,这些事情总是比预期的要困难一些……我刚刚意识到我不能使用它,因为我将绑定放在模板函数中,我不知道参数是引用。啊,好吧,我将使用指针。stefaanv:我只能根据我在你的question@stefaanv: 为了解决这个问题,您可以在Boost.CallTraits样式中使用简单的结构,例如template struct param_type{typedef T type;};template struct param_type{typedef Boost::ref type;};(或者我遗漏了什么?)谢谢,这很有帮助。不幸的是,这些事情总是比预期的要困难一些……我刚刚意识到我不能使用它,因为我已经将绑定放在模板函数中,我不知道参数是引用。啊,好吧,我将使用指针。stefaanv:我只能根据我在你的question@stefaanv:添加为了解决这个问题,您可以在Boost.CallTraits样式中使用简单的结构,例如模板结构参数类型{typedef T type;};模板结构参数类型{typedef Boost::ref type;};(或者我遗漏了什么?)用于必须在
绑定中使用的任何函数(或类似的参数列表)我只使用指针。它可以防止经常很难调试的意外复制。对于必须在
bind
(或类似参数列表)中使用的任何函数,我只使用指针。它可以防止经常很难调试的意外复制。