1*c00df57bSHui Xie //===----------------------------------------------------------------------===// 2*c00df57bSHui Xie // 3*c00df57bSHui Xie // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*c00df57bSHui Xie // See https://llvm.org/LICENSE.txt for license information. 5*c00df57bSHui Xie // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*c00df57bSHui Xie // 7*c00df57bSHui Xie //===----------------------------------------------------------------------===// 8*c00df57bSHui Xie 9*c00df57bSHui Xie // UNSUPPORTED: c++03, c++11, c++14, c++17 10*c00df57bSHui Xie 11*c00df57bSHui Xie // template <class _Tp> 12*c00df57bSHui Xie // inline constexpr empty_view<_Tp> empty{}; 13*c00df57bSHui Xie 14*c00df57bSHui Xie #include <ranges> 15*c00df57bSHui Xie #include <cassert> 16*c00df57bSHui Xie 17*c00df57bSHui Xie #include "test_macros.h" 18*c00df57bSHui Xie 19*c00df57bSHui Xie template <class T> testType()20*c00df57bSHui Xieconstexpr void testType() { 21*c00df57bSHui Xie ASSERT_SAME_TYPE(decltype(std::views::empty<T>), const std::ranges::empty_view<T>); 22*c00df57bSHui Xie ASSERT_SAME_TYPE(decltype((std::views::empty<T>)), const std::ranges::empty_view<T>&); 23*c00df57bSHui Xie 24*c00df57bSHui Xie auto v = std::views::empty<T>; 25*c00df57bSHui Xie assert(std::ranges::empty(v)); 26*c00df57bSHui Xie } 27*c00df57bSHui Xie 28*c00df57bSHui Xie struct Empty {}; 29*c00df57bSHui Xie struct BigType { 30*c00df57bSHui Xie char buff[8]; 31*c00df57bSHui Xie }; 32*c00df57bSHui Xie test()33*c00df57bSHui Xieconstexpr bool test() { 34*c00df57bSHui Xie 35*c00df57bSHui Xie testType<int>(); 36*c00df57bSHui Xie testType<const int>(); 37*c00df57bSHui Xie testType<int*>(); 38*c00df57bSHui Xie testType<Empty>(); 39*c00df57bSHui Xie testType<const Empty>(); 40*c00df57bSHui Xie testType<BigType>(); 41*c00df57bSHui Xie 42*c00df57bSHui Xie return true; 43*c00df57bSHui Xie } 44*c00df57bSHui Xie main(int,char **)45*c00df57bSHui Xieint main(int, char**) { 46*c00df57bSHui Xie test(); 47*c00df57bSHui Xie static_assert(test()); 48*c00df57bSHui Xie 49*c00df57bSHui Xie return 0; 50*c00df57bSHui Xie } 51