можно ли использовать boost :: bind со ссылками без копирования? - PullRequest
1 голос
/ 08 апреля 2011

Следующий код показывает, что параметр, переданный по ссылке, копируется при использовании 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();
}

1 Ответ

7 голосов
/ 08 апреля 2011

Вы должны использовать boost :: ref для передачи ссылок на boost bind.

boost::function<void()> f = boost::bind(function1, boost::ref(y));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...