以下代碼顯示使用boost :: bind時,通過引用傳遞的參數會被複制。有沒有辦法阻止複製,而不是訴諸指針(我目前使用的是解決方法)? (用gcc 4.4.3測試)boost :: bind可以在不復制的情況下與引用一起使用嗎?
#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();
}
對於必須在'bind'(或類似參數列表)中使用的任何函數,我只使用指針。它可以防止通常很難調試的意外複製。 – 2011-04-08 12:53:45