#pragma once #include "hashmap/HashMap_Variadic.hpp" namespace sprawl { namespace collections { template using HashSet = HashMap>; template using BasicHashMap = HashMap>; template using MemberHashMap = HashMap>; template using ConstMemberHashMap = HashMap>; namespace detail { template struct UnderlyingType { typedef typename std::remove_reference()))>::type type; }; template struct MethodType { typedef typename UnderlyingType::type UType; typedef KeyType(UType::*type)(void); typedef KeyType(UType::*const_type)(void) const; }; } template::type function> using PtrMemberHashMap = HashMap::type, KeyType, function, ValueType>>; template::const_type function> using PtrConstMemberHashMap = HashMap::type, KeyType, function, ValueType>>; template using FunctionHashMap = HashMap>; template::type*)> using PtrFunctionHashMap = HashMap::type, KeyType, function, ValueType>>; } }