1e5d8b93eSzoecarver //===----------------------------------------------------------------------===// 2e5d8b93eSzoecarver // 3e5d8b93eSzoecarver // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e5d8b93eSzoecarver // See https://llvm.org/LICENSE.txt for license information. 5e5d8b93eSzoecarver // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e5d8b93eSzoecarver // 7e5d8b93eSzoecarver //===----------------------------------------------------------------------===// 8e5d8b93eSzoecarver 9e5d8b93eSzoecarver // UNSUPPORTED: c++03, c++11, c++14, c++17 1071909de3SMark de Wever // UNSUPPORTED: libcpp-has-no-incomplete-ranges 11e5d8b93eSzoecarver 12e5d8b93eSzoecarver // template<class T> 13e5d8b93eSzoecarver // inline constexpr bool enable_borrowed_range<common_view<T>> = enable_borrowed_range<T>; 14e5d8b93eSzoecarver 15e5d8b93eSzoecarver #include <ranges> 16e5d8b93eSzoecarver 17*9021f368SArthur O'Dwyer // common_view can only wrap Ts that are `view<T> && !common_range<T>`, so we need to invent one. 18*9021f368SArthur O'Dwyer struct Uncommon : std::ranges::view_base { 193666dd79SArthur O'Dwyer int *begin() const; 20*9021f368SArthur O'Dwyer std::unreachable_sentinel_t end() const; 21e5d8b93eSzoecarver }; 22e5d8b93eSzoecarver 23*9021f368SArthur O'Dwyer static_assert(!std::ranges::borrowed_range<std::ranges::common_view<Uncommon>>); 24*9021f368SArthur O'Dwyer static_assert(!std::ranges::borrowed_range<std::ranges::common_view<std::ranges::owning_view<Uncommon>>>); 25*9021f368SArthur O'Dwyer static_assert( std::ranges::borrowed_range<std::ranges::common_view<std::ranges::ref_view<Uncommon>>>); 26