//===----------------------------------------------------------------------===// // // 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 integral = // see below #include #include #include "arithmetic.h" #include "test_macros.h" template constexpr bool CheckIntegralQualifiers() { constexpr bool result = std::integral; static_assert(std::integral == result); static_assert(std::integral == result); static_assert(std::integral == result); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); static_assert(!std::integral); return result; } // standard signed and unsigned integers static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); // extended integers #ifndef TEST_HAS_NO_INT128 static_assert(CheckIntegralQualifiers<__int128_t>()); static_assert(CheckIntegralQualifiers<__uint128_t>()); #endif // bool and char types are also integral static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); static_assert(CheckIntegralQualifiers()); // types that aren't integral static_assert(!std::integral); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(!CheckIntegralQualifiers()); static_assert(CheckSubsumption(0)); static_assert(CheckSubsumption(0U));