//===----------------------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// #ifndef LIBCXX_TEST_SUPPORT_TEST_STANDARD_FUNCTION_H #define LIBCXX_TEST_SUPPORT_TEST_STANDARD_FUNCTION_H #include "test_macros.h" #if TEST_STD_VER >= 20 template constexpr bool is_addressable = requires(T t) { &t; }; template constexpr bool is_function_like() { using X = std::remove_cvref_t; static_assert(!is_addressable); static_assert(!is_addressable); static_assert(std::destructible && !std::default_initializable); static_assert(!std::move_constructible); static_assert(!std::assignable_from); static_assert(!std::copy_constructible); static_assert(!std::assignable_from); static_assert(!std::assignable_from); static_assert(!std::assignable_from); static_assert(std::is_final_v); return true; } #endif #endif // LIBCXX_TEST_SUPPORT_TEST_STANDARD_FUNCTION_H