diff --git a/llvm/include/llvm/ADT/iterator_range.h b/llvm/include/llvm/ADT/iterator_range.h index 8e9b22f2d4dfa..cc8070eb4d528 100644 --- a/llvm/include/llvm/ADT/iterator_range.h +++ b/llvm/include/llvm/ADT/iterator_range.h @@ -24,16 +24,6 @@ namespace llvm { -template -struct explicitly_convertible : std::false_type {}; - -template -struct explicitly_convertible< - From, To, - std::void_t( - std::declval>()))>> : std::true_type { -}; - /// A range adaptor for a pair of iterators. /// /// This just wraps two iterators into a range-compatible interface. Nothing @@ -42,6 +32,10 @@ template class iterator_range { IteratorT begin_iterator, end_iterator; + template + using explicitly_converted_t = decltype(static_cast( + std::declval>())); + public: #if defined(__GNUC__) && \ (__GNUC__ == 7 || (__GNUC__ == 8 && __GNUC_MINOR__ < 4)) @@ -49,10 +43,9 @@ class iterator_range { // See https://github.com/llvm/llvm-project/issues/63843 template #else - template < - typename Container, - std::enable_if_t, IteratorT>::value> * = nullptr> + template , IteratorT>> * = nullptr> #endif iterator_range(Container &&c) : begin_iterator(adl_begin(c)), end_iterator(adl_end(c)) {