brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · f533c1b Raw
48 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// explicit outer-iterator::value_type::value_type(outer-iterator i)12 13#include <ranges>14 15#include <cassert>16#include "../types.h"17 18// Verify that the constructor is `explicit`.19static_assert(!std::is_convertible_v<OuterIterForward, ValueTypeForward>);20static_assert(!std::is_convertible_v<OuterIterInput, ValueTypeInput>);21 22constexpr bool test() {23  // `View` is a forward range.24  {25    CopyableView input = "a";26    SplitViewCopyable v(input, "b");27    ValueTypeCopyable val(v.begin());28    assert(val.begin().base() == input.begin());29  }30 31  // `View` is an input range.32  {33    InputView input = "a";34    SplitViewInput v(input, 'b');35    ValueTypeInput val(v.begin());36    assert(*val.begin().base() == *input.begin());37  }38 39  return true;40}41 42int main(int, char**) {43  test();44  static_assert(test());45 46  return 0;47}48