diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h index 43c9b80edff78..ace5f60b572d7 100644 --- a/llvm/include/llvm/ADT/STLExtras.h +++ b/llvm/include/llvm/ADT/STLExtras.h @@ -416,7 +416,8 @@ static constexpr bool HasFreeFunctionRBegin = } // namespace detail // Returns an iterator_range over the given container which iterates in reverse. -template auto reverse(ContainerTy &&C) { +// Does not mutate the container. +template [[nodiscard]] auto reverse(ContainerTy &&C) { if constexpr (detail::HasFreeFunctionRBegin) return make_range(adl_rbegin(C), adl_rend(C)); else @@ -1182,11 +1183,13 @@ template class concat_range { } // end namespace detail -/// Concatenated range across two or more ranges. +/// Returns a concatenated range across two or more ranges. Does not modify the +/// ranges. /// /// The desired value type must be explicitly specified. template -detail::concat_range concat(RangeTs &&... Ranges) { +[[nodiscard]] detail::concat_range +concat(RangeTs &&...Ranges) { static_assert(sizeof...(RangeTs) > 1, "Need more than one range to concatenate!"); return detail::concat_range(