diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h --- a/llvm/include/llvm/ADT/STLExtras.h +++ b/llvm/include/llvm/ADT/STLExtras.h @@ -290,7 +290,15 @@ : public iterator_adaptor_base< mapped_iterator, ItTy, typename std::iterator_traits::iterator_category, - typename std::remove_reference::type> { + typename std::remove_reference::type, + typename std::iterator_traits::difference_type, + std::conditional_t< + std::is_same< + typename std::remove_reference::type, + typename std::iterator_traits::value_type>::value, + typename std::iterator_traits::pointer, + typename std::remove_reference::type *>, + FuncReturnTy> { public: mapped_iterator(ItTy U, FuncTy F) : mapped_iterator::iterator_adaptor_base(std::move(U)), F(std::move(F)) {}