//===----------------------------------------------------------------------===//
//
// 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_CONCEPTS_LANG_CONCEPTS_ARITHMETIC_H_
#define LIBCXX_TEST_CONCEPTS_LANG_CONCEPTS_ARITHMETIC_H_

#include <concepts>

// This overload should never be called. It exists solely to force subsumption.
template <std::integral I>
[[nodiscard]] constexpr bool CheckSubsumption(I) {
  return false;
}

// clang-format off
template <std::integral I>
requires std::signed_integral<I> && (!std::unsigned_integral<I>)
[[nodiscard]] constexpr bool CheckSubsumption(I) {
  return std::is_signed_v<I>;
}

template <std::integral I>
requires std::unsigned_integral<I> && (!std::signed_integral<I>)
[[nodiscard]] constexpr bool CheckSubsumption(I) {
  return std::is_unsigned_v<I>;
}
// clang-format on

enum ClassicEnum { a, b, c };
enum class ScopedEnum { x, y, z };
struct EmptyStruct {};

#endif // LIBCXX_TEST_CONCEPTS_LANG_CONCEPTS_ARITHMETIC_H_
