#pragma once #include "binarytree/BinaryTree_Variadic.hpp" namespace sprawl { namespace collections { template using BinarySet = BinaryTree>; template using BasicBinaryTree = BinaryTree>; template using MemberBinaryTree = BinaryTree>; template using ConstMemberBinaryTree = BinaryTree>; namespace detail { template struct TreeUnderlyingType { typedef typename std::remove_reference()))>::type type; }; template struct TreeMethodType { typedef typename TreeUnderlyingType::type UType; typedef KeyType(UType::*type)(void); typedef KeyType(UType::*const_type)(void) const; }; } template::type function> using PtrMemberBinaryTree = BinaryTree::type, KeyType, function, ValueType>>; template::const_type function> using PtrConstMemberBinaryTree = BinaryTree::type, KeyType, function, ValueType>>; template using FunctionBinaryTree = BinaryTree>; template::type*)> using PtrFunctionBinaryTree = BinaryTree::type, KeyType, function, ValueType>>; } }