что это можно сделать с помощью макросов (но я не уверен)
Типа, если заюзать это: https://stackoverflow.com/questions/12447557/can-we-have-recursive-macros
и это: template <std::size_t N>
decltype(auto) make_placeholder() {
return std::placeholders::__ph<N>();
};
А вообще мне хотелось бы следующее (коммент в последнем примере кода):
template <typename Ret, typename ...Args>
class Signal {
public:
using BindFunction = std::function<Ret(Args...)>;
public:
explicit Signal(BindFunction _function)
: m_bind_function(_function)
{}
public:
Ret call(Args... args) {
return m_bind_function(args...);
}
protected:
BindFunction m_bind_function;
};
инстанс которого создается:
template <typename Ret, typename Type, typename ...Args>
decltype(auto) make_signal(Type* _object, Ret (Type::*_method)(Args...)) {
return Signal<Ret, Args...>(std::bind(_method, _object, /* ТУТ ДОЛЖНО БЫТЬ ЧТО_ТО...*/));
};
Используйте лямбду вместо std::bind.
Обсуждают сегодня