brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · f57bc40 Raw
65 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// static constexpr size_t size() noexcept;12 13#include <ranges>14#include <cassert>15 16#include "test_macros.h"17 18constexpr bool test() {19  {20    auto sv = std::ranges::single_view<int>(42);21    assert(sv.size() == 1);22 23    ASSERT_SAME_TYPE(decltype(sv.size()), std::size_t);24    static_assert(noexcept(sv.size()));25  }26  {27    const auto sv = std::ranges::single_view<int>(42);28    assert(sv.size() == 1);29 30    ASSERT_SAME_TYPE(decltype(sv.size()), std::size_t);31    static_assert(noexcept(sv.size()));32  }33  {34    auto sv = std::ranges::single_view<int>(42);35    assert(std::ranges::size(sv) == 1);36 37    ASSERT_SAME_TYPE(decltype(std::ranges::size(sv)), std::size_t);38    static_assert(noexcept(std::ranges::size(sv)));39  }40  {41    const auto sv = std::ranges::single_view<int>(42);42    assert(std::ranges::size(sv) == 1);43 44    ASSERT_SAME_TYPE(decltype(std::ranges::size(sv)), std::size_t);45    static_assert(noexcept(std::ranges::size(sv)));46  }47 48  // Test that it's static.49  {50    assert(std::ranges::single_view<int>::size() == 1);51 52    ASSERT_SAME_TYPE(decltype(std::ranges::single_view<int>::size()), std::size_t);53    static_assert(noexcept(std::ranges::single_view<int>::size()));54  }55 56  return true;57}58 59int main(int, char**) {60  test();61  static_assert(test());62 63  return 0;64}65