On 14. Sep 2020, at 11:04, Alexander Grund via Boost
wrote: I'm not a big fan of the NTTP used especially as e.g. for overloaded operator() the result is ambigious. What was the reason for choosing it?
Besides that as Peter said the tuple/MPL list of arguments is a good idea. Another good idea is improved handling of member functions. E.g. in C++11 and up you don't only have const and noexcept but also rvalue and lvalue specifiers. So that could be added too
AFAIU Boost.CallableTraits can do all this and more. https://www.boost.org/doc/libs/1_74_0/libs/callable_traits/doc/html/callable... https://www.boost.org/doc/libs/1_74_0/libs/callable_traits/doc/html/callable... https://www.boost.org/doc/libs/1_74_0/libs/callable_traits/doc/html/callable... The args are returned as a std::tuple, which is Boost.Mp11 compatible.