brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · e269312 Raw
78 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// std::ranges::lazy_split_view::outer-iterator::value_type::end()12 13#include <ranges>14 15#include <cassert>16#include "../types.h"17 18constexpr bool test() {19  // `View` is a forward range.20  {21    CopyableView input("a");22 23    // Non-const.24    {25      SplitViewCopyable v(input, "b");26      auto val = *v.begin();27 28      static_assert(std::same_as<decltype(val.end()), std::default_sentinel_t>);29      static_assert(noexcept(val.end()));30      [[maybe_unused]] auto e = val.end();31    }32 33    // Const.34    {35      SplitViewCopyable v(input, "b");36      const auto val = *v.begin();37 38      static_assert(std::same_as<decltype(val.end()), std::default_sentinel_t>);39      static_assert(noexcept(val.end()));40      [[maybe_unused]] auto e = val.end();41    }42  }43 44  // `View` is an input range.45  {46    InputView input("a");47 48    // Non-const.49    {50      SplitViewInput v(input, 'b');51      auto val = *v.begin();52 53      static_assert(std::same_as<decltype(val.end()), std::default_sentinel_t>);54      static_assert(noexcept(val.end()));55      [[maybe_unused]] auto e = val.end();56    }57 58    // Const.59    {60      SplitViewInput v(input, 'b');61      const auto val = *v.begin();62 63      static_assert(std::same_as<decltype(val.end()), std::default_sentinel_t>);64      static_assert(noexcept(val.end()));65      [[maybe_unused]] auto e = val.end();66    }67  }68 69  return true;70}71 72int main(int, char**) {73  assert(test());74  static_assert(test());75 76  return 0;77}78