mp: Generalize function information retrieval

Generalizes MemFnInfo to be compatible with all function types.
Also adds type introspection for arguments, as well as helper templates for the common types supported by all partial specializations.
This commit is contained in:
Lioncash 2016-08-16 12:40:04 -04:00 committed by MerryMage
parent 439619c827
commit 9ed9f4c565
6 changed files with 56 additions and 13 deletions

View file

@ -127,8 +127,8 @@ public:
*/
template<typename FnT>
static auto GetMatcher(FnT fn, const char* const name, const char* const bitstring) {
using Visitor = typename mp::MemFnInfo<FnT>::class_type;
constexpr size_t args_count = mp::MemFnInfo<FnT>::args_count;
using Visitor = typename mp::FunctionInfo<FnT>::class_type;
constexpr size_t args_count = mp::FunctionInfo<FnT>::args_count;
using Iota = std::make_index_sequence<args_count>;
const auto mask_and_expect = GetMaskAndExpect(bitstring);