diff --git a/include/libcamera/bound_method.h b/include/libcamera/bound_method.h index a1541212..9fd58c69 100644 --- a/include/libcamera/bound_method.h +++ b/include/libcamera/bound_method.h @@ -39,19 +39,6 @@ public: virtual void invokePack(void *pack) = 0; protected: - void activatePack(void *pack, bool deleteMethod); - - void *obj_; - Object *object_; - -private: - ConnectionType connectionType_; -}; - -template -class BoundMethodArgs : public BoundMethodBase -{ -private: #ifndef __DOXYGEN__ /* * This is a cheap partial implementation of std::integer_sequence<> @@ -71,10 +58,23 @@ private: }; #endif + void activatePack(void *pack, bool deleteMethod); + + void *obj_; + Object *object_; + +private: + ConnectionType connectionType_; +}; + +template +class BoundMethodArgs : public BoundMethodBase +{ +private: using PackType = std::tuple::type...>; template - void invokePack(void *pack, sequence) + void invokePack(void *pack, BoundMethodBase::sequence) { PackType *args = static_cast(pack); invoke(std::get(*args)...); @@ -87,7 +87,7 @@ public: void invokePack(void *pack) override { - invokePack(pack, typename generator::type()); + invokePack(pack, typename BoundMethodBase::generator::type()); } virtual void activate(Args... args, bool deleteMethod = false) = 0;