brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · caad08c Raw
68 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++11, c++14, c++1710 11// template<class R>12//   reverse_view(R&&) -> reverse_view<views::all_t<R>>;13 14#include <ranges>15 16#include <concepts>17#include <utility>18 19#include "test_iterators.h"20 21struct View : std::ranges::view_base {22  int *begin() const;23  int *end() const;24};25 26struct Range {27  int *begin() const;28  int *end() const;29};30 31struct BorrowedRange {32  int *begin() const;33  int *end() const;34};35template<>36inline constexpr bool std::ranges::enable_borrowed_range<BorrowedRange> = true;37 38void testCTAD() {39    View v;40    Range r;41    BorrowedRange br;42 43    static_assert(std::same_as<44        decltype(std::ranges::reverse_view(v)),45        std::ranges::reverse_view<View>46    >);47    static_assert(std::same_as<48        decltype(std::ranges::reverse_view(std::move(v))),49        std::ranges::reverse_view<View>50    >);51    static_assert(std::same_as<52        decltype(std::ranges::reverse_view(r)),53        std::ranges::reverse_view<std::ranges::ref_view<Range>>54    >);55    static_assert(std::same_as<56        decltype(std::ranges::reverse_view(std::move(r))),57        std::ranges::reverse_view<std::ranges::owning_view<Range>>58    >);59    static_assert(std::same_as<60        decltype(std::ranges::reverse_view(br)),61        std::ranges::reverse_view<std::ranges::ref_view<BorrowedRange>>62    >);63    static_assert(std::same_as<64        decltype(std::ranges::reverse_view(std::move(br))),65        std::ranges::reverse_view<std::ranges::owning_view<BorrowedRange>>66    >);67}68