brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · caaf137 Raw
49 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... Args>12//   requires constructible_from<T, Args...>13// constexpr explicit single_view(in_place_t, Args&&... args);14 15#include <cassert>16#include <ranges>17#include <utility>18 19#include "test_macros.h"20 21struct TakesTwoInts {22  int a_, b_;23  constexpr TakesTwoInts(int a, int b) : a_(a), b_(b) {}24};25 26constexpr bool test() {27  {28    std::ranges::single_view<TakesTwoInts> sv(std::in_place, 1, 2);29    assert(sv.data()->a_ == 1);30    assert(sv.data()->b_ == 2);31    assert(sv.size() == 1);32  }33  {34    const std::ranges::single_view<TakesTwoInts> sv(std::in_place, 1, 2);35    assert(sv.data()->a_ == 1);36    assert(sv.data()->b_ == 2);37    assert(sv.size() == 1);38  }39 40  return true;41}42 43int main(int, char**) {44  test();45  static_assert(test());46 47  return 0;48}49