diff options
Diffstat (limited to 'src/lib/netlist/plib/ppmf.h')
-rw-r--r-- | src/lib/netlist/plib/ppmf.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/netlist/plib/ppmf.h b/src/lib/netlist/plib/ppmf.h index dc151d5d6a6..4f0e8b7ba07 100644 --- a/src/lib/netlist/plib/ppmf.h +++ b/src/lib/netlist/plib/ppmf.h @@ -241,23 +241,28 @@ namespace plib { { public: class generic_class; + + template <class C> + using MemberFunctionType = R (C::*)(Targs...); + pmfp() : pmfp_base<R, Targs...>(), m_obj(nullptr) {} - template<typename MemberFunctionType, typename O> - pmfp(MemberFunctionType mftp, O *object) + template<typename O> + pmfp(MemberFunctionType<O> mftp, O *object) : pmfp_base<R, Targs...>() { this->set(mftp, object); } - template<typename MemberFunctionType, typename O> - void set(MemberFunctionType mftp, O *object) + + template<typename O> + void set(MemberFunctionType<O> mftp, O *object) { this->set_base(mftp, object); m_obj = reinterpret_cast<generic_class *>(object); } - inline R operator()(Targs... args) + inline R operator()(Targs ... args) { return this->call(m_obj, std::forward<Targs>(args)...); } |