//===----------------------------------------------------------------------===// // // 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 // concept unsigned_integral = // see below #include #include #include "arithmetic.h" #include "test_macros.h" template constexpr bool CheckUnsignedIntegralQualifiers() { constexpr bool result = std::unsigned_integral; static_assert(std::unsigned_integral == result); static_assert(std::unsigned_integral == result); static_assert(std::unsigned_integral == result); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); static_assert(!std::unsigned_integral); return result; } // standard unsigned types static_assert(CheckUnsignedIntegralQualifiers()); static_assert(CheckUnsignedIntegralQualifiers()); static_assert(CheckUnsignedIntegralQualifiers()); static_assert(CheckUnsignedIntegralQualifiers()); static_assert(CheckUnsignedIntegralQualifiers()); // Whether bool and character types are signed or unsigned is impl-defined static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); static_assert(CheckUnsignedIntegralQualifiers() == !std::is_signed_v); // extended integers #ifndef TEST_HAS_NO_INT128 static_assert(CheckUnsignedIntegralQualifiers<__uint128_t>()); static_assert(!CheckUnsignedIntegralQualifiers<__int128_t>()); #endif // integer types that aren't unsigned integrals static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!std::unsigned_integral); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(!CheckUnsignedIntegralQualifiers()); static_assert(CheckSubsumption(0)); static_assert(CheckSubsumption(0U));