1616#include " attr.h"
1717#include " gil.h"
1818#include " options.h"
19+ #include " typing.h"
1920
2021#include < cstdlib>
2122#include < cstring>
@@ -2707,7 +2708,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
27072708 typename Sentinel,
27082709 typename ValueType = typename detail::iterator_access<Iterator>::result_type,
27092710 typename ... Extra>
2710- iterator make_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
2711+ typing::Iterator<ValueType> make_iterator (Iterator first, Sentinel last, Extra &&...extra ) {
27112712 return detail::make_iterator_impl<detail::iterator_access<Iterator>,
27122713 Policy,
27132714 Iterator,
@@ -2725,7 +2726,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
27252726 typename Sentinel,
27262727 typename KeyType = typename detail::iterator_key_access<Iterator>::result_type,
27272728 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 ) {
27292730 return detail::make_iterator_impl<detail::iterator_key_access<Iterator>,
27302731 Policy,
27312732 Iterator,
@@ -2743,7 +2744,7 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
27432744 typename Sentinel,
27442745 typename ValueType = typename detail::iterator_value_access<Iterator>::result_type,
27452746 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 ) {
27472748 return detail::make_iterator_impl<detail::iterator_value_access<Iterator>,
27482749 Policy,
27492750 Iterator,
@@ -2758,8 +2759,10 @@ iterator make_value_iterator(Iterator first, Sentinel last, Extra &&...extra) {
27582759// / `std::begin()`/`std::end()`
27592760template <return_value_policy Policy = return_value_policy::reference_internal,
27602761 typename Type,
2762+ typename ValueType = typename detail::iterator_access<
2763+ decltype (std::begin (std::declval<Type &>()))>::result_type,
27612764 typename ... Extra>
2762- iterator make_iterator (Type &value, Extra &&...extra ) {
2765+ typing::Iterator<ValueType> make_iterator (Type &value, Extra &&...extra ) {
27632766 return make_iterator<Policy>(
27642767 std::begin (value), std::end (value), std::forward<Extra>(extra)...);
27652768}
@@ -2768,8 +2771,10 @@ iterator make_iterator(Type &value, Extra &&...extra) {
27682771// / `std::begin()`/`std::end()`
27692772template <return_value_policy Policy = return_value_policy::reference_internal,
27702773 typename Type,
2774+ typename KeyType = typename detail::iterator_key_access<
2775+ decltype (std::begin (std::declval<Type &>()))>::result_type,
27712776 typename ... Extra>
2772- iterator make_key_iterator (Type &value, Extra &&...extra ) {
2777+ typing::Iterator<KeyType> make_key_iterator (Type &value, Extra &&...extra ) {
27732778 return make_key_iterator<Policy>(
27742779 std::begin (value), std::end (value), std::forward<Extra>(extra)...);
27752780}
@@ -2778,8 +2783,10 @@ iterator make_key_iterator(Type &value, Extra &&...extra) {
27782783// / `std::begin()`/`std::end()`
27792784template <return_value_policy Policy = return_value_policy::reference_internal,
27802785 typename Type,
2786+ typename ValueType = typename detail::iterator_value_access<
2787+ decltype (std::begin (std::declval<Type &>()))>::result_type,
27812788 typename ... Extra>
2782- iterator make_value_iterator (Type &value, Extra &&...extra ) {
2789+ typing::Iterator<ValueType> make_value_iterator (Type &value, Extra &&...extra ) {
27832790 return make_value_iterator<Policy>(
27842791 std::begin (value), std::end (value), std::forward<Extra>(extra)...);
27852792}
0 commit comments