brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 73457b8 Raw
54 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// constexpr decltype(auto) operator*() const;12 13#include <cassert>14#include <ranges>15 16#include "test_macros.h"17#include "../types.h"18 19constexpr bool test() {20  int buffer[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};21 22  {23    std::ranges::join_view jv(buffer);24    auto iter = jv.begin();25    for (int i = 1; i < 17; ++i) {26      assert(*iter++ == i);27    }28  }29  {30    std::ranges::join_view jv(buffer);31    auto iter = std::next(jv.begin(), 15);32    assert(*iter++ == 16);33    assert(iter == jv.end());34  }35  {36    ChildView children[4] = {ChildView(buffer[0]), ChildView(buffer[1]), ChildView(buffer[2]), ChildView(buffer[3])};37    auto jv = std::ranges::join_view(ParentView(children));38    auto iter = jv.begin();39    for (int i = 1; i < 17; ++i) {40      assert(*iter == i);41      ++iter;42    }43  }44 45  return true;46}47 48int main(int, char**) {49  test();50  static_assert(test());51 52  return 0;53}54