2#include <ossia/detail/hash.hpp>
6#if defined(_GLIBCXX_DEBUG)
7#define OSSIA_NO_FAST_CONTAINERS
8#elif defined(_LIBCPP_DEBUG_LEVEL) && _LIBCPP_DEBUG_LEVEL > 0
9#define OSSIA_NO_FAST_CONTAINERS
10#elif defined(_LIBCPP_ENABLE_ASSERTIONS) && _LIBCPP_ENABLE_ASSERTIONS > 0
11#define OSSIA_NO_FAST_CONTAINERS
12#elif defined(_LIBCPP_ENABLE_DEBUG_MODE)
13#define OSSIA_NO_FAST_CONTAINERS
14#elif defined(_ITERATOR_DEBUG_LEVEL) && _ITERATOR_DEBUG_LEVEL > 0
15#define OSSIA_NO_FAST_CONTAINERS
19#if !defined(OSSIA_NO_FAST_CONTAINERS)
20#include <ankerl/unordered_dense.h>
21#include <unordered_map>
25 typename K,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
26 typename A = std::allocator<K>>
27using hash_set = ankerl::unordered_dense::set<K, H, E, A>;
30 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
31 typename A = std::allocator<std::pair<K, V>>>
32using hash_map = ankerl::unordered_dense::map<K, V, H, E, A>;
35 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
37using hash_multimap = std::unordered_multimap<K, V, H, E>;
40#include <unordered_map>
41#include <unordered_set>
45 typename K,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
47using hash_set = std::unordered_set<K, H, E>;
50 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
52using hash_map = std::unordered_map<K, V, H, E>;
55 typename K,
typename V,
typename H = ossia::hash<K>,
typename E = ossia::equal_to<K>,
57using hash_multimap = std::unordered_multimap<K, V, H, E>;