On 22/01/2014 03:54 p.m., Vicente J. Botet Escriba wrote:
Le 22/01/14 17:07, Nat Goodspeed a écrit :
On Wed, Jan 22, 2014 at 7:30 AM, Vicente J. Botet Escriba
wrote: Le 22/01/14 03:39, Nat Goodspeed a écrit :
In my (obviously incomplete) mental model, a hypothetical fiber constructor:
fiber f(some_callable, 3.14, "a string", 17);
would be completely equivalent to:
fiber f(bind(some_callable, 3.14, "a string", 17));
What am I missing? (If this is already well-explained elsewhere, I would appreciate a pointer as much as your own explanation.) boost::bind is not movable :( or is it in C++11?) I haven't yet read Agustín's links -- but I will, thank you!
Since movable-only callables are clearly an important use case, I would hope that if (let's say) std::bind is not yet itself movable, that's a transient situation which will soon be remedied. I think that std::bind is movable.
Yes, the forwarding call wrapper returned from `std::bind` is movable. That doesn't change the fact that: - Using `bind` in the implementation provides different semantics than those required by the standard. - Using `bind` either in the implementation or in the user code means that arguments are not forwarded, thus movable-only types cannot be used with a target callable taking them by value, and using copyable types results in unnecessary copies. Regards, -- Agustín K-ballo Bergé.- http://talesofcpp.fusionfenix.com