Pull type policies into detail namespace

This commit is contained in:
Christian Mazakas
2023-01-04 11:54:22 -08:00
parent cb4e636d78
commit dcff2ac5b5
3 changed files with 25 additions and 13 deletions

View File

@ -32,10 +32,8 @@ namespace boost {
#pragma warning(disable : 4714) /* marked as __forceinline not inlined */
#endif
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
class unordered_flat_map
{
struct map_types
namespace detail {
template <class Key, class T> struct flat_map_types
{
using key_type = Key;
using raw_key_type = typename std::remove_const<Key>::type;
@ -78,6 +76,12 @@ namespace boost {
boost::allocator_destroy(al, p);
}
};
} // namespace detail
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
class unordered_flat_map
{
using map_types = detail::flat_map_types<Key, T>;
using table_type = detail::foa::table<map_types, Hash, KeyEqual,
typename boost::allocator_rebind<Allocator,

View File

@ -30,10 +30,8 @@ namespace boost {
#pragma warning(disable : 4714) /* marked as __forceinline not inlined */
#endif
template <class Key, class Hash, class KeyEqual, class Allocator>
class unordered_flat_set
{
struct set_types
namespace detail {
template <class Key> struct flat_set_types
{
using key_type = Key;
using init_type = Key;
@ -62,6 +60,12 @@ namespace boost {
boost::allocator_destroy(al, p);
}
};
} // namespace detail
template <class Key, class Hash, class KeyEqual, class Allocator>
class unordered_flat_set
{
using set_types = detail::flat_set_types<Key>;
using table_type = detail::foa::table<set_types, Hash, KeyEqual,
typename boost::allocator_rebind<Allocator,

View File

@ -33,10 +33,8 @@ namespace boost {
#pragma warning(disable : 4714) /* marked as __forceinline not inlined */
#endif
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
class unordered_node_map
{
struct map_types
namespace detail {
template <class Key, class T> struct node_map_types
{
using key_type = Key;
using raw_key_type = typename std::remove_const<Key>::type;
@ -73,7 +71,7 @@ namespace boost {
template <class A, class... Args>
static void construct(A& al, storage_type* p, Args&&... args)
{
*p=boost::to_address(boost::allocator_allocate(al, 1));
*p = boost::to_address(boost::allocator_allocate(al, 1));
try {
boost::allocator_construct(al, *p, std::forward<Args>(args)...);
} catch (...) {
@ -96,6 +94,12 @@ namespace boost {
}
}
};
} // namespace detail
template <class Key, class T, class Hash, class KeyEqual, class Allocator>
class unordered_node_map
{
using map_types = detail::node_map_types<Key, T>;
using table_type = detail::foa::table<map_types, Hash, KeyEqual,
typename boost::allocator_rebind<Allocator,