Index: llvm/include/llvm/ADT/STLExtras.h =================================================================== --- llvm/include/llvm/ADT/STLExtras.h +++ llvm/include/llvm/ADT/STLExtras.h @@ -285,12 +285,20 @@ template ()(*std::declval()))> + decltype(std::declval()(*std::declval()))> class mapped_iterator : public iterator_adaptor_base< - mapped_iterator, ItTy, - typename std::iterator_traits::iterator_category, - typename std::remove_reference::type> { + mapped_iterator, ItTy, + typename std::iterator_traits::iterator_category, + 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)) {}