boost::function Syntax nachbauen
-
Hallo zusammen,
ggf. finde ich es in den Unmengen der Bibliothek nicht, oder sehe es einfach nicht. Ich habe mich gefragt, wie schaffe ich es, die Syntax der boost::function<> nachzubauen, eben jenes:
boost::function<void (int, int)> entspricht boost::function<void, int, int>
Gruß,
_gast01
-
Es ist nicht gar klar, wonach du genau fragst. Vielleicht hilft das:
template<class Ret, class... Args> class abstract_func_wrapper { public: virtual ~abstract_func_wrapper() {} virtual abstract_func_wrapper *clone() const = 0; virtual Ret invoke(Args... args) = 0; }; template<class Signature> class function; // bleibt undefiniert template<class Ret, class... Args> class function<Ret(Args...)> // partielle Spezialisierung { .... abstract_func_wrapper *wrapper_ptr; .... Ret operator()(Args... args) const { if (!wrapper_ptr) throw bad_function_call(); return wrapper_ptr->invoke(std::forward<Args>(args)...); } .... };
-
Warum eigentlich invoke und nicht gleich operator ()?
-
Hat, vielen Dank
-
314159265358979 schrieb:
Warum eigentlich invoke und nicht gleich operator ()?
zeiger->invoke(params)
finde ich schöner als
zeiger->operator()(params)
oder
(*zeiger)(params)
-
Okay, das ist Geschmackssache. Ich bevorzuge die dritte Variante.