
On Mar 14, 2007, at 5:33 PM, Christopher Kohlhoff wrote:
What if there existed a:
template <class R> template <class F> promise_functor<R, F> promise<R>::operator()(F f);
This would be in addition to the current setter functionality in promise.
Hmm, I think I'd prefer a non-member function to make the distinction between that act of settingthe promise and the act of composing another function object clearer when reading the code. I don't see any implementation reason to make it a member function - is there one?
No I don't think there's a reason. A friend free function can do anything a member can. I think we're just looking at syntax: future<std::string> resolve(std::string host_name) { promise<std::string> result; boost::asio::ip::tcp::resolver::query query(host_name, "0"); resolver_.async_resolve(query, result(boost::bind(&Resolver::handle_resolve, this, _1, _2))); return result; } vs: future<std::string> resolve(std::string host_name) { promise<std::string> result; boost::asio::ip::tcp::resolver::query query(host_name, "0"); resolver_.async_resolve(query, make_promise_functor(result, boost::bind(&Resolver::handle_resolve, this, _1, _2))); return result; } -Howard