//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // __is_referenceable_v // // [defns.referenceable] defines "a referenceable type" as: // An object type, a function type that does not have cv-qualifiers // or a ref-qualifier, or a reference type. // #include #include #include "test_macros.h" struct Foo {}; static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); // Functions without cv-qualifiers are referenceable static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); static_assert((!std::__libcpp_is_referenceable::value), ""); #endif // member functions with or without cv-qualifiers are referenceable static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #if TEST_STD_VER >= 11 static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); static_assert((std::__libcpp_is_referenceable::value), ""); #endif