//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // __libcpp_is_referenceable // // [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), ""); 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), ""); 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), ""); // member functions with or without cv-qualifiers are referenceable 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), ""); 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), "");