#ifndef ALSK_ALSK_SKELETON_MUSCLE_MUSCLE_H #define ALSK_ALSK_SKELETON_MUSCLE_MUSCLE_H #include namespace alsk { /** * @brief hold the functionoid type and its links */ template using Fun = tmp::Pack; } template struct Fn; template struct Fn { using Signature = R(Ts...); constexpr R operator()(Ts... args) { return F(args...); } }; template struct Fn { using Signature = R(Ts...); constexpr R operator()(Ts... args) { return F(args...); } }; #define FN(f) Fn #define FN_OVERLOAD(T, f) Fn /** C++17 * namespace impl { * * template struct Fn; * * template * struct Fn { * R operator()(Ts... args) { return F(args...); } * }; * * } * * template * using Fn = impl::Fn; */ #endif