From: Nicholas Allegra Date: Fri, 27 Sep 2019 01:58:31 +0000 (+0000) Subject: Revert r373034 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1d5182274429c53acc876d113659274ba6993da1;p=llvm Revert r373034 It breaks the build on MSVC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373039 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/STLExtras.h b/include/llvm/ADT/STLExtras.h index 430707cbd79..274933bc520 100644 --- a/include/llvm/ADT/STLExtras.h +++ b/include/llvm/ADT/STLExtras.h @@ -1573,14 +1573,6 @@ template auto to_address(const Ptr &P) -> decltype(P.operator->()) { } template constexpr T *to_address(T *P) { return P; } -template -auto index(R &&TheRange, - typename std::iterator_traits>::difference_type N) - -> decltype(TheRange.begin()[N]) { - assert(N < TheRange.end() - TheRange.begin() && "Index out of range!"); - return TheRange.begin()[N]; -} - } // end namespace llvm #endif // LLVM_ADT_STLEXTRAS_H diff --git a/include/llvm/ADT/iterator_range.h b/include/llvm/ADT/iterator_range.h index 3bb9231441c..774c7c4e336 100644 --- a/include/llvm/ADT/iterator_range.h +++ b/include/llvm/ADT/iterator_range.h @@ -20,17 +20,9 @@ #include #include -#include namespace llvm { -template -constexpr bool is_random_iterator() { - return std::is_same< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag>::value; -} - /// A range adaptor for a pair of iterators. /// /// This just wraps two iterators into a range-compatible interface. Nothing @@ -66,31 +58,11 @@ template iterator_range make_range(std::pair p) { return iterator_range(std::move(p.first), std::move(p.second)); } -/// Non-random-iterator version template -auto drop_begin(T &&t, int n) -> - typename std::enable_if(), - iterator_range>::type { - auto begin = adl_begin(t); - auto end = adl_end(t); - for (int i = 0; i < n; i++) { - assert(begin != end); - ++begin; - } - return make_range(begin, end); +iterator_range()))> drop_begin(T &&t, + int n) { + return make_range(std::next(adl_begin(t), n), adl_end(t)); } - -/// Optimized version for random iterators -template -auto drop_begin(T &&t, int n) -> - typename std::enable_if(), - iterator_range>::type { - auto begin = adl_begin(t); - auto end = adl_end(t); - assert(end - begin >= n && "Dropping more elements than exist!"); - return make_range(std::next(begin, n), end); -} - } #endif