From bbcf4d84ebe2123bd294f248fac5b0f9206d3d79 Mon Sep 17 00:00:00 2001 From: MikePopoloski Date: Sat, 11 May 2024 17:59:41 -0400 Subject: [PATCH] Another round of fixes for 1.85 --- boost_unordered.hpp | 123 +++++------------- include/boost/container_hash/hash.hpp | 8 +- include/boost/core/empty_value.hpp | 44 ------- include/boost/exception/exception.hpp | 2 - include/boost/throw_exception.hpp | 4 +- .../detail/allocator_constructed.hpp | 2 +- .../unordered/detail/foa/flat_map_types.hpp | 6 +- .../unordered/detail/foa/flat_set_types.hpp | 2 +- .../unordered/detail/foa/node_handle.hpp | 12 +- .../unordered/detail/foa/node_map_types.hpp | 17 +-- .../unordered/detail/foa/node_set_types.hpp | 13 +- .../boost/unordered/unordered_node_map.hpp | 6 +- .../boost/unordered/unordered_node_set.hpp | 6 +- 13 files changed, 72 insertions(+), 173 deletions(-) diff --git a/boost_unordered.hpp b/boost_unordered.hpp index 603f986..a0103fd 100644 --- a/boost_unordered.hpp +++ b/boost_unordered.hpp @@ -272,7 +272,7 @@ namespace boost { template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void destroy(A& al, value_type* p) noexcept @@ -493,34 +493,14 @@ class empty_value { public: typedef T type; -#ifndef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS empty_value() = default; -#else - constexpr empty_value() { } -#endif constexpr empty_value(boost::empty_init_t) : value_() { } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES template constexpr empty_value(boost::empty_init_t, U&& value, Args&&... args) : value_(std::forward(value), std::forward(args)...) { } -#else - template - constexpr empty_value(boost::empty_init_t, U&& value) - : value_(std::forward(value)) { } -#endif -#else - template - constexpr empty_value(boost::empty_init_t, const U& value) - : value_(value) { } - - template - constexpr empty_value(boost::empty_init_t, U& value) - : value_(value) { } -#endif constexpr const T& get() const noexcept { return value_; @@ -534,41 +514,20 @@ class empty_value { T value_; }; -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template class empty_value : T { public: typedef T type; -#ifndef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS empty_value() = default; -#else - constexpr empty_value() { } -#endif constexpr empty_value(boost::empty_init_t) : T() { } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES template constexpr empty_value(boost::empty_init_t, U&& value, Args&&... args) : T(std::forward(value), std::forward(args)...) { } -#else - template - constexpr empty_value(boost::empty_init_t, U&& value) - : T(std::forward(value)) { } -#endif -#else - template - constexpr empty_value(boost::empty_init_t, const U& value) - : T(value) { } - - template - constexpr empty_value(boost::empty_init_t, U& value) - : T(value) { } -#endif constexpr const T& get() const noexcept { return *this; @@ -578,7 +537,6 @@ class empty_value return *this; } }; -#endif } @@ -688,7 +646,7 @@ namespace boost { template static void construct(Allocator& a, T* p, Args&&... args) { - std::allocator_traits>::construct(a, p, std::forward(args)...); + std::allocator_traits>::construct(a, p, std::forward(args)...); } template @@ -5249,9 +5207,7 @@ namespace boost return boost::hash_unordered_range( v.begin(), v.end() ); } -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ - ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ - ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) +#if ( ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) // resolve ambiguity with unconstrained stdext::hash_value in :-/ @@ -5519,9 +5475,7 @@ namespace boost } }; -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ - ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ - ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) +#if ( ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) // Dinkumware has stdext::hash_value for basic_string in :-/ @@ -6240,19 +6194,19 @@ namespace boost { template static void construct(A& al, init_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, key_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void destroy(A& al, init_type* p) noexcept @@ -6831,8 +6785,6 @@ boost return x; } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template <> struct set_info_rv @@ -6847,8 +6799,6 @@ boost } }; -#endif - inline boost::source_location get_exception_throw_location( exception const & x ) { return boost::source_location( @@ -7221,20 +7171,17 @@ template class BOOST_SYMBOL_VISIBLE with_throw_location: public E, publ { } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - with_throw_location( E && e, boost::source_location const & loc ): E( std::move( e ) ), throw_location( loc ) { } -#endif }; } // namespace detail #ifndef BOOST_NO_EXCEPTIONS -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS template BOOST_NORETURN void throw_with_location( E && e, boost::source_location const & loc = BOOST_CURRENT_LOCATION ) { @@ -8309,8 +8256,8 @@ struct node_handle_base reset(); }else{ bool const pocma= - boost::allocator_propagate_on_container_move_assignment< - Allocator>::type::value; + std::allocator_traits< + Allocator>::propagate_on_container_move_assignment::value; BOOST_ASSERT(pocma||al()==nh.al()); @@ -8347,8 +8294,8 @@ struct node_handle_base [[nodiscard]] bool empty()const noexcept{return p_.p==nullptr;} void swap(node_handle_base& nh) noexcept( - boost::allocator_is_always_equal::type::value|| - boost::allocator_propagate_on_container_swap::type::value) + std::allocator_traits::is_always_equal::value|| + std::allocator_traits::propagate_on_container_swap::value) { if(this!=&nh){ if(empty()){ @@ -8364,8 +8311,8 @@ struct node_handle_base reset(); }else{ bool const pocs= - boost::allocator_propagate_on_container_swap< - Allocator>::type::value; + std::allocator_traits< + Allocator>::propagate_on_container_swap::value; BOOST_ASSERT(pocs || al()==nh.al()); @@ -8436,21 +8383,22 @@ namespace boost { template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, element_type* p, Args&&... args) { - p->p = boost::allocator_allocate(al, 1); + p->p = std::allocator_traits>::allocate(al, 1); BOOST_TRY { - boost::allocator_construct( - al, std::to_address(p->p), std::forward(args)...); + std::allocator_traits>::construct( + al, std::to_address(p->p), std::forward(args)...); } BOOST_CATCH(...) { - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); BOOST_RETHROW } BOOST_CATCH_END @@ -8466,7 +8414,7 @@ namespace boost { { if (p->p) { destroy(al, std::to_address(p->p)); - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); } } }; @@ -8562,7 +8510,7 @@ namespace boost { class unordered_node_set { using set_types = detail::foa::node_set_types::type>; + typename std::allocator_traits::void_pointer>; using table_type = detail::foa::table::rebind_alloc< @@ -8595,8 +8543,8 @@ namespace boost { using iterator = typename table_type::iterator; using const_iterator = typename table_type::const_iterator; using node_type = detail::node_set_handle::type>; + typename std::allocator_traits::rebind_alloc< + typename set_types::value_type>>; using insert_return_type = detail::foa::insert_return_type; @@ -9261,33 +9209,34 @@ namespace boost { template static void construct(A& al, init_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, key_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, element_type* p, Args&&... args) { - p->p = boost::allocator_allocate(al, 1); + p->p = std::allocator_traits>::allocate(al, 1); BOOST_TRY { - boost::allocator_construct( - al, std::to_address(p->p), std::forward(args)...); + std::allocator_traits>::construct( + al, std::to_address(p->p), std::forward(args)...); } BOOST_CATCH(...) { - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); BOOST_RETHROW } BOOST_CATCH_END @@ -9313,7 +9262,7 @@ namespace boost { { if (p->p) { destroy(al, std::to_address(p->p)); - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); } } }; @@ -9417,7 +9366,7 @@ namespace boost { class unordered_node_map { using map_types = detail::foa::node_map_types::type>; + typename std::allocator_traits::void_pointer>; using table_type = detail::foa::table::rebind_alloc< @@ -9451,8 +9400,8 @@ namespace boost { using iterator = typename table_type::iterator; using const_iterator = typename table_type::const_iterator; using node_type = detail::node_map_handle::type>; + typename std::allocator_traits::rebind_alloc< + typename map_types::value_type>>; using insert_return_type = detail::foa::insert_return_type; diff --git a/include/boost/container_hash/hash.hpp b/include/boost/container_hash/hash.hpp index 7f359ea..92c6f9a 100644 --- a/include/boost/container_hash/hash.hpp +++ b/include/boost/container_hash/hash.hpp @@ -266,9 +266,7 @@ namespace boost return boost::hash_unordered_range( v.begin(), v.end() ); } -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ - ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ - ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) +#if ( ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) // resolve ambiguity with unconstrained stdext::hash_value in :-/ @@ -536,9 +534,7 @@ namespace boost } }; -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && ( \ - ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || \ - ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) +#if ( ( defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142 ) || ( !defined(_MSVC_STL_VERSION) && defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 ) ) // Dinkumware has stdext::hash_value for basic_string in :-/ diff --git a/include/boost/core/empty_value.hpp b/include/boost/core/empty_value.hpp index 1e432f7..1419020 100644 --- a/include/boost/core/empty_value.hpp +++ b/include/boost/core/empty_value.hpp @@ -9,9 +9,7 @@ Distributed under the Boost Software License, Version 1.0. #define BOOST_CORE_EMPTY_VALUE_HPP #include -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) #include -#endif #if defined(BOOST_GCC_VERSION) && (BOOST_GCC_VERSION >= 40700) #define BOOST_DETAIL_EMPTY_VALUE_BASE @@ -53,34 +51,14 @@ class empty_value { public: typedef T type; -#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) empty_value() = default; -#else - constexpr empty_value() { } -#endif constexpr empty_value(boost::empty_init_t) : value_() { } -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template constexpr empty_value(boost::empty_init_t, U&& value, Args&&... args) : value_(std::forward(value), std::forward(args)...) { } -#else - template - constexpr empty_value(boost::empty_init_t, U&& value) - : value_(std::forward(value)) { } -#endif -#else - template - constexpr empty_value(boost::empty_init_t, const U& value) - : value_(value) { } - - template - constexpr empty_value(boost::empty_init_t, U& value) - : value_(value) { } -#endif constexpr const T& get() const noexcept { return value_; @@ -94,41 +72,20 @@ class empty_value { T value_; }; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template class empty_value : T { public: typedef T type; -#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) empty_value() = default; -#else - constexpr empty_value() { } -#endif constexpr empty_value(boost::empty_init_t) : T() { } -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) -#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template constexpr empty_value(boost::empty_init_t, U&& value, Args&&... args) : T(std::forward(value), std::forward(args)...) { } -#else - template - constexpr empty_value(boost::empty_init_t, U&& value) - : T(std::forward(value)) { } -#endif -#else - template - constexpr empty_value(boost::empty_init_t, const U& value) - : T(value) { } - - template - constexpr empty_value(boost::empty_init_t, U& value) - : T(value) { } -#endif constexpr const T& get() const noexcept { return *this; @@ -138,7 +95,6 @@ class empty_value return *this; } }; -#endif } /* empty_ */ diff --git a/include/boost/exception/exception.hpp b/include/boost/exception/exception.hpp index cef0efc..7b54f29 100644 --- a/include/boost/exception/exception.hpp +++ b/include/boost/exception/exception.hpp @@ -370,7 +370,6 @@ boost return x; } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template <> struct @@ -386,7 +385,6 @@ boost } }; -#endif inline boost::source_location get_exception_throw_location( exception const & x ) { diff --git a/include/boost/throw_exception.hpp b/include/boost/throw_exception.hpp index 712de6c..44726a4 100644 --- a/include/boost/throw_exception.hpp +++ b/include/boost/throw_exception.hpp @@ -202,20 +202,18 @@ template class BOOST_SYMBOL_VISIBLE with_throw_location: public E, publ { } -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) with_throw_location( E && e, boost::source_location const & loc ): E( std::move( e ) ), throw_location( loc ) { } -#endif }; } // namespace detail #if !defined(BOOST_NO_EXCEPTIONS) -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) template BOOST_NORETURN void throw_with_location( E && e, boost::source_location const & loc = BOOST_CURRENT_LOCATION ) { diff --git a/include/boost/unordered/detail/allocator_constructed.hpp b/include/boost/unordered/detail/allocator_constructed.hpp index a6c6a86..3adf07b 100644 --- a/include/boost/unordered/detail/allocator_constructed.hpp +++ b/include/boost/unordered/detail/allocator_constructed.hpp @@ -20,7 +20,7 @@ namespace boost { template static void construct(Allocator& a, T* p, Args&&... args) { - std::allocator_traits>::construct(a, p, std::forward(args)...); + std::allocator_traits>::construct(a, p, std::forward(args)...); } template diff --git a/include/boost/unordered/detail/foa/flat_map_types.hpp b/include/boost/unordered/detail/foa/flat_map_types.hpp index bbabd8f..491a14f 100644 --- a/include/boost/unordered/detail/foa/flat_map_types.hpp +++ b/include/boost/unordered/detail/foa/flat_map_types.hpp @@ -47,19 +47,19 @@ namespace boost { template static void construct(A& al, init_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, key_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void destroy(A& al, init_type* p) noexcept diff --git a/include/boost/unordered/detail/foa/flat_set_types.hpp b/include/boost/unordered/detail/foa/flat_set_types.hpp index 78d5aa7..fda43d7 100644 --- a/include/boost/unordered/detail/foa/flat_set_types.hpp +++ b/include/boost/unordered/detail/foa/flat_set_types.hpp @@ -27,7 +27,7 @@ namespace boost { template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void destroy(A& al, value_type* p) noexcept diff --git a/include/boost/unordered/detail/foa/node_handle.hpp b/include/boost/unordered/detail/foa/node_handle.hpp index 86a9f80..abf9cb2 100644 --- a/include/boost/unordered/detail/foa/node_handle.hpp +++ b/include/boost/unordered/detail/foa/node_handle.hpp @@ -119,8 +119,8 @@ struct node_handle_base reset(); }else{ /* !empty(), !nh.empty() */ bool const pocma= - boost::allocator_propagate_on_container_move_assignment< - Allocator>::type::value; + std::allocator_traits< + Allocator>::propagate_on_container_move_assignment::value; BOOST_ASSERT(pocma||al()==nh.al()); @@ -157,8 +157,8 @@ struct node_handle_base [[nodiscard]] bool empty()const noexcept{return p_.p==nullptr;} void swap(node_handle_base& nh) noexcept( - boost::allocator_is_always_equal::type::value|| - boost::allocator_propagate_on_container_swap::type::value) + std::allocator_traits::is_always_equal::value|| + std::allocator_traits::propagate_on_container_swap::value) { if(this!=&nh){ if(empty()){ @@ -174,8 +174,8 @@ struct node_handle_base reset(); }else{ bool const pocs= - boost::allocator_propagate_on_container_swap< - Allocator>::type::value; + std::allocator_traits< + Allocator>::propagate_on_container_swap::value; BOOST_ASSERT(pocs || al()==nh.al()); diff --git a/include/boost/unordered/detail/foa/node_map_types.hpp b/include/boost/unordered/detail/foa/node_map_types.hpp index cf57b66..5198e65 100644 --- a/include/boost/unordered/detail/foa/node_map_types.hpp +++ b/include/boost/unordered/detail/foa/node_map_types.hpp @@ -72,33 +72,34 @@ namespace boost { template static void construct(A& al, init_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, key_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, element_type* p, Args&&... args) { - p->p = boost::allocator_allocate(al, 1); + p->p = std::allocator_traits>::allocate(al, 1); BOOST_TRY { - boost::allocator_construct( - al, std::to_address(p->p), std::forward(args)...); + std::allocator_traits>::construct( + al, std::to_address(p->p), std::forward(args)...); } BOOST_CATCH(...) { - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); BOOST_RETHROW } BOOST_CATCH_END @@ -124,7 +125,7 @@ namespace boost { { if (p->p) { destroy(al, std::to_address(p->p)); - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); } } }; diff --git a/include/boost/unordered/detail/foa/node_set_types.hpp b/include/boost/unordered/detail/foa/node_set_types.hpp index c30eca3..dc838ff 100644 --- a/include/boost/unordered/detail/foa/node_set_types.hpp +++ b/include/boost/unordered/detail/foa/node_set_types.hpp @@ -47,21 +47,22 @@ namespace boost { template static void construct(A& al, value_type* p, Args&&... args) { - std::allocator_traits>::construct(al, p, std::forward(args)...); + std::allocator_traits>::construct(al, p, std::forward(args)...); } template static void construct(A& al, element_type* p, Args&&... args) { - p->p = boost::allocator_allocate(al, 1); + p->p = std::allocator_traits>::allocate(al, 1); BOOST_TRY { - boost::allocator_construct( - al, std::to_address(p->p), std::forward(args)...); + std::allocator_traits>::construct( + al, std::to_address(p->p), std::forward(args)...); } BOOST_CATCH(...) { - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); BOOST_RETHROW } BOOST_CATCH_END @@ -77,7 +78,7 @@ namespace boost { { if (p->p) { destroy(al, std::to_address(p->p)); - boost::allocator_deallocate(al, p->p, 1); + std::allocator_traits>::deallocate(al, p->p, 1); } } }; diff --git a/include/boost/unordered/unordered_node_map.hpp b/include/boost/unordered/unordered_node_map.hpp index 084fc5f..75c3a89 100644 --- a/include/boost/unordered/unordered_node_map.hpp +++ b/include/boost/unordered/unordered_node_map.hpp @@ -72,7 +72,7 @@ namespace boost { class unordered_node_map { using map_types = detail::foa::node_map_types::type>; + typename std::allocator_traits::void_pointer>; using table_type = detail::foa::table::rebind_alloc< @@ -106,8 +106,8 @@ namespace boost { using iterator = typename table_type::iterator; using const_iterator = typename table_type::const_iterator; using node_type = detail::node_map_handle::type>; + typename std::allocator_traits::rebind_alloc< + typename map_types::value_type>>; using insert_return_type = detail::foa::insert_return_type; diff --git a/include/boost/unordered/unordered_node_set.hpp b/include/boost/unordered/unordered_node_set.hpp index b3ef0cb..1e39e74 100644 --- a/include/boost/unordered/unordered_node_set.hpp +++ b/include/boost/unordered/unordered_node_set.hpp @@ -63,7 +63,7 @@ namespace boost { class unordered_node_set { using set_types = detail::foa::node_set_types::type>; + typename std::allocator_traits::void_pointer>; using table_type = detail::foa::table::rebind_alloc< @@ -96,8 +96,8 @@ namespace boost { using iterator = typename table_type::iterator; using const_iterator = typename table_type::const_iterator; using node_type = detail::node_set_handle::type>; + typename std::allocator_traits::rebind_alloc< + typename set_types::value_type>>; using insert_return_type = detail::foa::insert_return_type;