A crazy thought - how about enabling something like this: #include <boost/function.hpp> #include <cassert>
int main() { boost::function<bool ()> f0 = true; boost::function<int ()> f1 = -1; boost::function<std::string ()> f2= "text"; assert(f0() == true); assert(f1() == -1); assert(f2() == "text"); } In other words, can we allow a zero-arity 'function<...>' to treat ordinary values as first-class function objects? It would make a lot of things so cooler :). For instance: class widget { public: // ... typedef boost::function<bool ()> bool_arg_t; self_t& enable(bool_arg_t a_enable); // note the signature! bool is_enabled() const; }; int main() { widget w; w.enable(true); // ordinary syntax/semantics assert(w.is_enabled()) widget w2; w.enable(boost::bind(&widget::is_enabled, &w2)); // here! w2.enable(false); assert(!w.is_enabled()) // ! } Pure & beautiful, IMO. Aleksey _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost