From 24bb55371a5d8d81b23521ebdfcde68f0035697c Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 20 Sep 2015 11:36:22 +0200 Subject: Basic project based on DrumGizmo. --- plugingui/tester.cc | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 plugingui/tester.cc (limited to 'plugingui/tester.cc') diff --git a/plugingui/tester.cc b/plugingui/tester.cc new file mode 100644 index 0000000..a6dfb6d --- /dev/null +++ b/plugingui/tester.cc @@ -0,0 +1,50 @@ +#include +#include +#include + +template +struct indices {}; + +template +struct build_indices + : build_indices {}; + +template +struct build_indices<0, Is...> : indices {}; + +template struct placeholder{}; + +namespace std{ +template +struct is_placeholder< ::placeholder> : std::integral_constant{}; +} // std:: +namespace detail{ + template + auto my_bind(indices, Ret (Fn::*f)(MArgs...), Fn *i, Args&&... args) + -> decltype(std::bind(f, i, std::forward(args)..., placeholder<1 + Is>{}...)){ + return std::bind(f, i, std::forward(args)..., placeholder<1 + Is>{}...); + } +} + +template +auto my_bind(std::function, Ret (Fn::*f)(MArgs...), Fn *i, Args&&... args) + -> decltype(detail::my_bind(build_indices{}, f, i, std::forward(args)...)){ + + return detail::my_bind(build_indices{}, f, i, std::forward(args)...); +} + + +#include +struct tmp{ + void testt(int var1, int var2){ + std::cout << var1 << " " << var2 << std::endl; + } +}; + +int main(){ + + tmp TMP; + auto f3 = my_bind(std::function(), &tmp::testt, &TMP); + f3(22, 23); + +} -- cgit v1.2.3