summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2019-01-31 01:03:32 +0100
committer couriersud <couriersud@gmx.org>2019-01-31 01:45:34 +0100
commita80f10e1cfe5d5a572b649bebb36cbb9d39053ab (patch)
tree52075bb9d62c0e2dbbe548c1c8b70d09f0f52b36 /src/lib
parent1513c777b47d19c7df99ba43142d7a334392a0b5 (diff)
netlist: type safety for delegates. (nw)
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/netlist/plib/ppmf.h15
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)...);
}