Допустим, у меня есть такая функция:
void someFunction(const ExpensiveObjectToCopy&);
Если я сделаю boost::function out if it, то эта функция будет хранить свою клонированную копию объекта в своем закрытии:
boost::function<void()> f = boost::bind(someFunction, x); // <-- f saves a copy of x
Теперь, если я начну передавать f по кругу, будет ли конструктор копирования boost::function copy каждый раз заново копировать этот объект, или каждая функция имеет одно и то же закрытие? (т.е. вот так)
boost::function<void()> f2 = f;
callSomeFunction(f);
etc.