@@ -1112,8 +1112,8 @@ class concat_iterator
11121112 // / We need the full range to know how to switch between each of the
11131113 // / iterators.
11141114 template <typename ... RangeTs>
1115- explicit concat_iterator (RangeTs &&... Ranges)
1116- : Begins(std::begin (Ranges)...), Ends(std::end (Ranges)...) {}
1115+ explicit concat_iterator (RangeTs &&...Ranges)
1116+ : Begins(adl_begin (Ranges)...), Ends(adl_end (Ranges)...) {}
11171117
11181118 using BaseT::operator ++;
11191119
@@ -1142,26 +1142,25 @@ template <typename ValueT, typename... RangeTs> class concat_range {
11421142public:
11431143 using iterator =
11441144 concat_iterator<ValueT,
1145- decltype (std::begin (std::declval<RangeTs &>()))...>;
1145+ decltype (adl_begin (std::declval<RangeTs &>()))...>;
11461146
11471147private:
11481148 std::tuple<RangeTs...> Ranges;
11491149
1150- template <size_t ... Ns>
1151- iterator begin_impl (std::index_sequence<Ns...>) {
1150+ template <size_t ... Ns> iterator begin_impl (std::index_sequence<Ns...>) {
11521151 return iterator (std::get<Ns>(Ranges)...);
11531152 }
11541153 template <size_t ... Ns>
11551154 iterator begin_impl (std::index_sequence<Ns...>) const {
11561155 return iterator (std::get<Ns>(Ranges)...);
11571156 }
11581157 template <size_t ... Ns> iterator end_impl (std::index_sequence<Ns...>) {
1159- return iterator (make_range (std::end (std::get<Ns>(Ranges)),
1160- std::end (std::get<Ns>(Ranges)))...);
1158+ return iterator (make_range (adl_end (std::get<Ns>(Ranges)),
1159+ adl_end (std::get<Ns>(Ranges)))...);
11611160 }
11621161 template <size_t ... Ns> iterator end_impl (std::index_sequence<Ns...>) const {
1163- return iterator (make_range (std::end (std::get<Ns>(Ranges)),
1164- std::end (std::get<Ns>(Ranges)))...);
1162+ return iterator (make_range (adl_end (std::get<Ns>(Ranges)),
1163+ adl_end (std::get<Ns>(Ranges)))...);
11651164 }
11661165
11671166public:
0 commit comments