state& set_function(T&& key, TFx&& fx, TObj&& obj) { global.set_function(std::forward<T>(key), std::forward<TFx>(fx), std::forward<TObj>(obj)); return *this; }
state& set_function(T&& key, TFx&& fx) { global.set_function(std::forward<T>(key), std::forward<TFx>(fx)); return *this; }
state& set_function(Key&& key, Sig* fun_ptr){ global.set_function(std::forward<Key>(key), fun_ptr); return *this; }
state& set_function(Key&& key, Sig C::* mem_ptr, T&& obj) { global.set_function(std::forward<Key>(key), mem_ptr, std::forward<T>(obj)); return *this; }
state& set_function(Key&& key, R fun_ptr(Args...)){ global.set_function(std::forward<Key>(key), fun_ptr); return *this; }