//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 // template // class empty_view; #include #include #include "test_macros.h" template constexpr void testType() { static_assert(std::ranges::range>); static_assert(std::ranges::range>); static_assert(std::ranges::view>); std::ranges::empty_view empty; assert(empty.begin() == nullptr); assert(empty.end() == nullptr); assert(empty.data() == nullptr); assert(empty.size() == 0); assert(empty.empty() == true); assert(std::ranges::begin(empty) == nullptr); assert(std::ranges::end(empty) == nullptr); assert(std::ranges::data(empty) == nullptr); assert(std::ranges::size(empty) == 0); assert(std::ranges::empty(empty) == true); } struct Empty {}; struct BigType { char buff[8]; }; template concept ValidEmptyView = requires { typename std::ranges::empty_view; }; constexpr bool test() { // Not objects: static_assert(!ValidEmptyView); static_assert(!ValidEmptyView); testType(); testType(); testType(); testType(); testType(); testType(); return true; } int main(int, char**) { test(); static_assert(test()); return 0; }