@@ -1110,8 +1110,8 @@ class concat_iterator
11101110 // / We need the full range to know how to switch between each of the
11111111 // / iterators.
11121112 template <typename ... RangeTs>
1113- explicit concat_iterator (RangeTs &&... Ranges)
1114- : Begins(std::begin (Ranges)...), Ends(std::end (Ranges)...) {}
1113+ explicit concat_iterator (RangeTs &&...Ranges)
1114+ : Begins(adl_begin (Ranges)...), Ends(adl_end (Ranges)...) {}
11151115
11161116 using BaseT::operator ++;
11171117
@@ -1140,26 +1140,25 @@ template <typename ValueT, typename... RangeTs> class concat_range {
11401140public:
11411141 using iterator =
11421142 concat_iterator<ValueT,
1143- decltype (std::begin (std::declval<RangeTs &>()))...>;
1143+ decltype (adl_begin (std::declval<RangeTs &>()))...>;
11441144
11451145private:
11461146 std::tuple<RangeTs...> Ranges;
11471147
1148- template <size_t ... Ns>
1149- iterator begin_impl (std::index_sequence<Ns...>) {
1148+ template <size_t ... Ns> iterator begin_impl (std::index_sequence<Ns...>) {
11501149 return iterator (std::get<Ns>(Ranges)...);
11511150 }
11521151 template <size_t ... Ns>
11531152 iterator begin_impl (std::index_sequence<Ns...>) const {
11541153 return iterator (std::get<Ns>(Ranges)...);
11551154 }
11561155 template <size_t ... Ns> iterator end_impl (std::index_sequence<Ns...>) {
1157- return iterator (make_range (std::end (std::get<Ns>(Ranges)),
1158- std::end (std::get<Ns>(Ranges)))...);
1156+ return iterator (make_range (adl_end (std::get<Ns>(Ranges)),
1157+ adl_end (std::get<Ns>(Ranges)))...);
11591158 }
11601159 template <size_t ... Ns> iterator end_impl (std::index_sequence<Ns...>) const {
1161- return iterator (make_range (std::end (std::get<Ns>(Ranges)),
1162- std::end (std::get<Ns>(Ranges)))...);
1160+ return iterator (make_range (adl_end (std::get<Ns>(Ranges)),
1161+ adl_end (std::get<Ns>(Ranges)))...);
11631162 }
11641163
11651164public:
0 commit comments