#pragma once #include template static inline std::function bind (R (T::*mth) (Args...), T *self) { return [self, mth] (Args... args) { return (self->*mth) (args...); }; }