mirror of
https://github.com/boostorg/container.git
synced 2025-08-02 14:04:26 +02:00
Complete pull #94 with flat_set/map/set containers
This commit is contained in:
@@ -69,6 +69,9 @@ class back_emplacer
|
|||||||
template<class InputIterator>
|
template<class InputIterator>
|
||||||
using it_based_non_const_first_type_t = typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type;
|
using it_based_non_const_first_type_t = typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type;
|
||||||
|
|
||||||
|
template<class InputIterator>
|
||||||
|
using it_based_const_first_type_t = const typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type;
|
||||||
|
|
||||||
template<class InputIterator>
|
template<class InputIterator>
|
||||||
using it_based_second_type_t = typename iterator_traits<InputIterator>::value_type::second_type;
|
using it_based_second_type_t = typename iterator_traits<InputIterator>::value_type::second_type;
|
||||||
|
|
||||||
|
@@ -49,10 +49,6 @@
|
|||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BOOST_CONTAINER_NO_CXX17_CTAD
|
|
||||||
#include <type_traits>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace container {
|
namespace container {
|
||||||
|
|
||||||
@@ -1593,16 +1589,16 @@ template < typename InputIterator, typename AllocatorOrCompare>
|
|||||||
flat_map(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
flat_map(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
, std::conditional_t< // Compare
|
, typename dtl::if_c< // Compare
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
>
|
>::type
|
||||||
, std::conditional_t< // Allocator
|
, typename dtl::if_c< // Allocator
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
>
|
>::type
|
||||||
>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
@@ -1623,16 +1619,16 @@ template < typename InputIterator, typename AllocatorOrCompare>
|
|||||||
flat_map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
flat_map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
, std::conditional_t< // Compare
|
, typename dtl::if_c< // Compare
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
>
|
>::type
|
||||||
, std::conditional_t< // Allocator
|
, typename dtl::if_c< // Allocator
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
>
|
>::type
|
||||||
>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
@@ -2901,16 +2897,16 @@ template < typename InputIterator, typename AllocatorOrCompare>
|
|||||||
flat_multimap(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
flat_multimap(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
, std::conditional_t< // Compare
|
, typename dtl::if_c< // Compare
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
>
|
>::type
|
||||||
, std::conditional_t< // Allocator
|
, typename dtl::if_c< // Allocator
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
>
|
>::type
|
||||||
>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
@@ -2931,16 +2927,16 @@ template < typename InputIterator, typename AllocatorOrCompare>
|
|||||||
flat_multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
flat_multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
, std::conditional_t< // Compare
|
, typename dtl::if_c< // Compare
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
>
|
>::type
|
||||||
, std::conditional_t< // Allocator
|
, typename dtl::if_c< // Allocator
|
||||||
dtl::is_allocator<AllocatorOrCompare>::value
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, AllocatorOrCompare
|
, AllocatorOrCompare
|
||||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
>
|
>::type
|
||||||
>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
|
@@ -1130,18 +1130,20 @@ template <typename InputIterator>
|
|||||||
flat_set(InputIterator, InputIterator) ->
|
flat_set(InputIterator, InputIterator) ->
|
||||||
flat_set< it_based_value_type_t<InputIterator> >;
|
flat_set< it_based_value_type_t<InputIterator> >;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
flat_set(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_set(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
flat_set< it_based_value_type_t<InputIterator>
|
flat_set< it_based_value_type_t<InputIterator>
|
||||||
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
flat_set(InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
flat_set< it_based_value_type_t<InputIterator>
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
, Compare>;
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1155,18 +1157,21 @@ template <typename InputIterator>
|
|||||||
flat_set(ordered_unique_range_t, InputIterator, InputIterator) ->
|
flat_set(ordered_unique_range_t, InputIterator, InputIterator) ->
|
||||||
flat_set< it_based_value_type_t<InputIterator>>;
|
flat_set< it_based_value_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
|
||||||
flat_set(ordered_unique_range_t, InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
flat_set< it_based_value_type_t<InputIterator>
|
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
|
||||||
, Allocator>;
|
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
flat_set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_set(ordered_unique_range_t, InputIterator, InputIterator, Compare const&) ->
|
|
||||||
flat_set< it_based_value_type_t<InputIterator>
|
flat_set< it_based_value_type_t<InputIterator>
|
||||||
, Compare>;
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
|
, typename dtl::if_c< // Allocator
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, AllocatorOrCompare
|
||||||
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1859,18 +1864,21 @@ template <typename InputIterator>
|
|||||||
flat_multiset(InputIterator, InputIterator) ->
|
flat_multiset(InputIterator, InputIterator) ->
|
||||||
flat_multiset< it_based_value_type_t<InputIterator> >;
|
flat_multiset< it_based_value_type_t<InputIterator> >;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
|
||||||
flat_multiset(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
flat_multiset< it_based_value_type_t<InputIterator>
|
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
|
||||||
, Allocator>;
|
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
flat_multiset(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_multiset(InputIterator, InputIterator, Compare const&) ->
|
flat_multiset < it_based_value_type_t<InputIterator>
|
||||||
flat_multiset< it_based_value_type_t<InputIterator>
|
, typename dtl::if_c< // Compare
|
||||||
, Compare>;
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
|
, typename dtl::if_c< // Allocator
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, AllocatorOrCompare
|
||||||
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1884,18 +1892,20 @@ template <typename InputIterator>
|
|||||||
flat_multiset(ordered_range_t, InputIterator, InputIterator) ->
|
flat_multiset(ordered_range_t, InputIterator, InputIterator) ->
|
||||||
flat_multiset< it_based_value_type_t<InputIterator>>;
|
flat_multiset< it_based_value_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
flat_multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
flat_multiset(ordered_range_t, InputIterator, InputIterator, Allocator const&) ->
|
flat_multiset < it_based_value_type_t<InputIterator>
|
||||||
flat_multiset< it_based_value_type_t<InputIterator>
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
flat_multiset(ordered_range_t, InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
flat_multiset< it_based_value_type_t<InputIterator>
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
, Compare>;
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
|
@@ -1302,20 +1302,21 @@ map(InputIterator, InputIterator) ->
|
|||||||
map< it_based_non_const_first_type_t<InputIterator>
|
map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>>;
|
, it_based_second_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
map(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
map(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
map< it_based_non_const_first_type_t<InputIterator>
|
map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
map(InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
map< it_based_non_const_first_type_t<InputIterator>
|
, new_allocator<std::pair<it_based_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
, it_based_second_type_t<InputIterator>
|
>::type
|
||||||
, Compare>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1331,20 +1332,21 @@ map(ordered_unique_range_t, InputIterator, InputIterator) ->
|
|||||||
map< it_based_non_const_first_type_t<InputIterator>
|
map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>>;
|
, it_based_second_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
map(ordered_unique_range_t, InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
map< it_based_non_const_first_type_t<InputIterator>
|
map< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
map< it_based_non_const_first_type_t<InputIterator>
|
, new_allocator<std::pair<it_based_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
, it_based_second_type_t<InputIterator>
|
>::type
|
||||||
, Compare>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -2229,20 +2231,21 @@ multimap(InputIterator, InputIterator) ->
|
|||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>>;
|
, it_based_second_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
multimap(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
multimap(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
multimap(InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
, new_allocator<std::pair<it_based_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
, it_based_second_type_t<InputIterator>
|
>::type
|
||||||
, Compare>;
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -2258,20 +2261,21 @@ multimap(ordered_range_t, InputIterator, InputIterator) ->
|
|||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>>;
|
, it_based_second_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
multimap(ordered_range_t, InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
multimap< it_based_non_const_first_type_t<InputIterator>
|
||||||
, it_based_second_type_t<InputIterator>
|
, it_based_second_type_t<InputIterator>
|
||||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
, typename dtl::if_c< // Compare
|
||||||
, Allocator>;
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, std::less<it_based_const_first_type_t<InputIterator>>
|
||||||
template < typename InputIterator, typename Compare
|
, AllocatorOrCompare
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
>::type
|
||||||
multimap(ordered_range_t, InputIterator, InputIterator, Compare const&) ->
|
, typename dtl::if_c< // Allocator
|
||||||
multimap< it_based_non_const_first_type_t<InputIterator>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, it_based_second_type_t<InputIterator>
|
, AllocatorOrCompare
|
||||||
, Compare>;
|
, new_allocator<std::pair<it_based_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||||
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
|
@@ -965,18 +965,20 @@ template <typename InputIterator>
|
|||||||
set(InputIterator, InputIterator) ->
|
set(InputIterator, InputIterator) ->
|
||||||
set< it_based_value_type_t<InputIterator> >;
|
set< it_based_value_type_t<InputIterator> >;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
set(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
set(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
set< it_based_value_type_t<InputIterator>
|
set< it_based_value_type_t<InputIterator>
|
||||||
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
set(InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
set< it_based_value_type_t<InputIterator>
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
, Compare>;
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -990,18 +992,21 @@ template <typename InputIterator>
|
|||||||
set(ordered_unique_range_t, InputIterator, InputIterator) ->
|
set(ordered_unique_range_t, InputIterator, InputIterator) ->
|
||||||
set< it_based_value_type_t<InputIterator>>;
|
set< it_based_value_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
|
||||||
set(ordered_unique_range_t, InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
set< it_based_value_type_t<InputIterator>
|
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
|
||||||
, Allocator>;
|
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
set(ordered_unique_range_t, InputIterator, InputIterator, Compare const&) ->
|
|
||||||
set< it_based_value_type_t<InputIterator>
|
set< it_based_value_type_t<InputIterator>
|
||||||
, Compare>;
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
|
, typename dtl::if_c< // Allocator
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, AllocatorOrCompare
|
||||||
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1626,18 +1631,21 @@ template <typename InputIterator>
|
|||||||
multiset(InputIterator, InputIterator) ->
|
multiset(InputIterator, InputIterator) ->
|
||||||
multiset< it_based_value_type_t<InputIterator> >;
|
multiset< it_based_value_type_t<InputIterator> >;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
|
||||||
multiset(InputIterator, InputIterator, Allocator const&) ->
|
|
||||||
multiset< it_based_value_type_t<InputIterator>
|
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
|
||||||
, Allocator>;
|
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
multiset(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
multiset(InputIterator, InputIterator, Compare const&) ->
|
multiset < it_based_value_type_t<InputIterator>
|
||||||
multiset< it_based_value_type_t<InputIterator>
|
, typename dtl::if_c< // Compare
|
||||||
, Compare>;
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
|
, typename dtl::if_c< // Allocator
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
|
, AllocatorOrCompare
|
||||||
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
@@ -1651,18 +1659,20 @@ template <typename InputIterator>
|
|||||||
multiset(ordered_range_t, InputIterator, InputIterator) ->
|
multiset(ordered_range_t, InputIterator, InputIterator) ->
|
||||||
multiset< it_based_value_type_t<InputIterator>>;
|
multiset< it_based_value_type_t<InputIterator>>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Allocator
|
template < typename InputIterator, typename AllocatorOrCompare>
|
||||||
, typename = dtl::require_allocator_t<Allocator>>
|
multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||||
multiset(ordered_range_t, InputIterator, InputIterator, Allocator const&) ->
|
multiset < it_based_value_type_t<InputIterator>
|
||||||
multiset< it_based_value_type_t<InputIterator>
|
, typename dtl::if_c< // Compare
|
||||||
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
, std::less<it_based_value_type_t<InputIterator>>
|
, std::less<it_based_value_type_t<InputIterator>>
|
||||||
, Allocator>;
|
, AllocatorOrCompare
|
||||||
|
>::type
|
||||||
template < typename InputIterator, typename Compare
|
, typename dtl::if_c< // Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>>
|
dtl::is_allocator<AllocatorOrCompare>::value
|
||||||
multiset(ordered_range_t, InputIterator, InputIterator, Compare const&) ->
|
, AllocatorOrCompare
|
||||||
multiset< it_based_value_type_t<InputIterator>
|
, new_allocator<it_based_value_type_t<InputIterator>>
|
||||||
, Compare>;
|
>::type
|
||||||
|
>;
|
||||||
|
|
||||||
template < typename InputIterator, typename Compare, typename Allocator
|
template < typename InputIterator, typename Compare, typename Allocator
|
||||||
, typename = dtl::require_nonallocator_t<Compare>
|
, typename = dtl::require_nonallocator_t<Compare>
|
||||||
|
Reference in New Issue
Block a user