16
16
#include " attr.h"
17
17
#include " gil.h"
18
18
#include " options.h"
19
+ #include " typing.h"
19
20
20
21
#include < cstdlib>
21
22
#include < cstring>
@@ -2707,7 +2708,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
2707
2708
typename Sentinel,
2708
2709
typename ValueType = typename detail::iterator_access<Iterator>::result_type,
2709
2710
typename ... Extra>
2710
- iterator make_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2711
+ typing::Iterator<ValueType> make_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2711
2712
return detail::make_iterator_impl<detail::iterator_access<Iterator>,
2712
2713
Policy,
2713
2714
Iterator,
@@ -2725,7 +2726,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
2725
2726
typename Sentinel,
2726
2727
typename KeyType = typename detail::iterator_key_access<Iterator>::result_type,
2727
2728
typename ... Extra>
2728
- iterator make_key_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2729
+ typing::Iterator<KeyType> make_key_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2729
2730
return detail::make_iterator_impl<detail::iterator_key_access<Iterator>,
2730
2731
Policy,
2731
2732
Iterator,
@@ -2743,7 +2744,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
2743
2744
typename Sentinel,
2744
2745
typename ValueType = typename detail::iterator_value_access<Iterator>::result_type,
2745
2746
typename ... Extra>
2746
- iterator make_value_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2747
+ typing::Iterator<ValueType> make_value_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2747
2748
return detail::make_iterator_impl<detail::iterator_value_access<Iterator>,
2748
2749
Policy,
2749
2750
Iterator,
@@ -2758,8 +2759,10 @@ iterator make_value_iterator(Iterator first, Sentinel last, Extra &&...extra) {
2758
2759
// / `std::begin()`/`std::end()`
2759
2760
template <return_value_policy Policy = return_value_policy::reference_internal,
2760
2761
typename Type,
2762
+ typename ValueType = typename detail::iterator_access<
2763
+ decltype (std::begin (std::declval<Type &>()))>::result_type,
2761
2764
typename ... Extra>
2762
- iterator make_iterator (Type &value, Extra &&...extra ) {
2765
+ typing::Iterator<ValueType> make_iterator (Type &value, Extra &&...extra ) {
2763
2766
return make_iterator<Policy>(
2764
2767
std::begin (value), std::end (value), std::forward<Extra>(extra)...);
2765
2768
}
@@ -2768,8 +2771,10 @@ iterator make_iterator(Type &value, Extra &&...extra) {
2768
2771
// / `std::begin()`/`std::end()`
2769
2772
template <return_value_policy Policy = return_value_policy::reference_internal,
2770
2773
typename Type,
2774
+ typename KeyType = typename detail::iterator_key_access<
2775
+ decltype (std::begin (std::declval<Type &>()))>::result_type,
2771
2776
typename ... Extra>
2772
- iterator make_key_iterator (Type &value, Extra &&...extra ) {
2777
+ typing::Iterator<KeyType> make_key_iterator (Type &value, Extra &&...extra ) {
2773
2778
return make_key_iterator<Policy>(
2774
2779
std::begin (value), std::end (value), std::forward<Extra>(extra)...);
2775
2780
}
@@ -2778,8 +2783,10 @@ iterator make_key_iterator(Type &value, Extra &&...extra) {
2778
2783
// / `std::begin()`/`std::end()`
2779
2784
template <return_value_policy Policy = return_value_policy::reference_internal,
2780
2785
typename Type,
2786
+ typename ValueType = typename detail::iterator_value_access<
2787
+ decltype (std::begin (std::declval<Type &>()))>::result_type,
2781
2788
typename ... Extra>
2782
- iterator make_value_iterator (Type &value, Extra &&...extra ) {
2789
+ typing::Iterator<ValueType> make_value_iterator (Type &value, Extra &&...extra ) {
2783
2790
return make_value_iterator<Policy>(
2784
2791
std::begin (value), std::end (value), std::forward<Extra>(extra)...);
2785
2792
}
0 commit comments