mirror of
https://github.com/boostorg/container.git
synced 2025-08-01 13:34:30 +02:00
merge CTADs with equivalent parameter-declaration-clauses
This commit is contained in:
@@ -49,6 +49,10 @@
|
||||
#include <initializer_list>
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_CONTAINER_NO_CXX17_CTAD
|
||||
#include <type_traits>
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace container {
|
||||
|
||||
@@ -1585,20 +1589,21 @@ flat_map(InputIterator, InputIterator) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>>;
|
||||
|
||||
template < typename InputIterator, typename Allocator
|
||||
, typename = dtl::require_allocator_t<Allocator>>
|
||||
flat_map(InputIterator, InputIterator, Allocator const&) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, Allocator>;
|
||||
|
||||
template < typename InputIterator, typename Compare
|
||||
, typename = dtl::require_nonallocator_t<Compare>>
|
||||
flat_map(InputIterator, InputIterator, Compare const&) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, Compare>;
|
||||
template < typename InputIterator, typename AllocatorOrCompare>
|
||||
flat_map(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, std::conditional_t< // Compare
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, AllocatorOrCompare
|
||||
>
|
||||
, std::conditional_t< // Allocator
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, AllocatorOrCompare
|
||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||
>
|
||||
>;
|
||||
|
||||
template < typename InputIterator, typename Compare, typename Allocator
|
||||
, typename = dtl::require_nonallocator_t<Compare>
|
||||
@@ -1614,20 +1619,21 @@ flat_map(ordered_unique_range_t, InputIterator, InputIterator) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>>;
|
||||
|
||||
template < typename InputIterator, typename Allocator
|
||||
, typename = dtl::require_allocator_t<Allocator>>
|
||||
flat_map(ordered_unique_range_t, InputIterator, InputIterator, Allocator const&) ->
|
||||
template < typename InputIterator, typename AllocatorOrCompare>
|
||||
flat_map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, Allocator>;
|
||||
|
||||
template < typename InputIterator, typename Compare
|
||||
, typename = dtl::require_nonallocator_t<Compare>>
|
||||
flat_map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&) ->
|
||||
flat_map< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, Compare>;
|
||||
, std::conditional_t< // Compare
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, AllocatorOrCompare
|
||||
>
|
||||
, std::conditional_t< // Allocator
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, AllocatorOrCompare
|
||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||
>
|
||||
>;
|
||||
|
||||
template < typename InputIterator, typename Compare, typename Allocator
|
||||
, typename = dtl::require_nonallocator_t<Compare>
|
||||
@@ -2891,20 +2897,21 @@ flat_multimap(InputIterator, InputIterator) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>>;
|
||||
|
||||
template < typename InputIterator, typename Allocator
|
||||
, typename = dtl::require_allocator_t<Allocator>>
|
||||
flat_multimap(InputIterator, InputIterator, Allocator const&) ->
|
||||
template < typename InputIterator, typename AllocatorOrCompare>
|
||||
flat_multimap(InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, Allocator>;
|
||||
|
||||
template < typename InputIterator, typename Compare
|
||||
, typename = dtl::require_nonallocator_t<Compare>>
|
||||
flat_multimap(InputIterator, InputIterator, Compare const&) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, Compare>;
|
||||
, std::conditional_t< // Compare
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, AllocatorOrCompare
|
||||
>
|
||||
, std::conditional_t< // Allocator
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, AllocatorOrCompare
|
||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||
>
|
||||
>;
|
||||
|
||||
template < typename InputIterator, typename Compare, typename Allocator
|
||||
, typename = dtl::require_nonallocator_t<Compare>
|
||||
@@ -2920,20 +2927,21 @@ flat_multimap(ordered_range_t, InputIterator, InputIterator) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>>;
|
||||
|
||||
template < typename InputIterator, typename Allocator
|
||||
, typename = dtl::require_allocator_t<Allocator>>
|
||||
flat_multimap(ordered_range_t, InputIterator, InputIterator, Allocator const&) ->
|
||||
template < typename InputIterator, typename AllocatorOrCompare>
|
||||
flat_multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const&) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, Allocator>;
|
||||
|
||||
template < typename InputIterator, typename Compare
|
||||
, typename = dtl::require_nonallocator_t<Compare>>
|
||||
flat_multimap(ordered_range_t, InputIterator, InputIterator, Compare const&) ->
|
||||
flat_multimap< it_based_non_const_first_type_t<InputIterator>
|
||||
, it_based_second_type_t<InputIterator>
|
||||
, Compare>;
|
||||
, std::conditional_t< // Compare
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, std::less<it_based_non_const_first_type_t<InputIterator>>
|
||||
, AllocatorOrCompare
|
||||
>
|
||||
, std::conditional_t< // Allocator
|
||||
dtl::is_allocator<AllocatorOrCompare>::value
|
||||
, AllocatorOrCompare
|
||||
, new_allocator<std::pair<it_based_non_const_first_type_t<InputIterator>, it_based_second_type_t<InputIterator>>>
|
||||
>
|
||||
>;
|
||||
|
||||
template < typename InputIterator, typename Compare, typename Allocator
|
||||
, typename = dtl::require_nonallocator_t<Compare>
|
||||
|
Reference in New Issue
Block a user