#ifndef LLVM_LIBC_SRC___SUPPORT_CPP_TYPE_TRAITS_MAKE_SIGNED_H
#define LLVM_LIBC_SRC___SUPPORT_CPP_TYPE_TRAITS_MAKE_SIGNED_H
#include "src/__support/CPP/type_traits/type_identity.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
namespace cpp {
template <typename T> struct make_signed;
template <> struct make_signed<char> : type_identity<char> { … };
template <> struct make_signed<signed char> : type_identity<char> { … };
template <> struct make_signed<short> : type_identity<short> { … };
template <> struct make_signed<int> : type_identity<int> { … };
template <> struct make_signed<long> : type_identity<long> { … };
template <> struct make_signed<long long> : type_identity<long long> { … };
template <> struct make_signed<unsigned char> : type_identity<char> { … };
template <> struct make_signed<unsigned short> : type_identity<short> { … };
template <> struct make_signed<unsigned int> : type_identity<int> { … };
template <> struct make_signed<unsigned long> : type_identity<long> { … };
template <>
struct make_signed<unsigned long long> : type_identity<long long> { … };
#ifdef LIBC_TYPES_HAS_INT128
template <> struct make_signed<__int128_t> : type_identity<__int128_t> { … };
template <> struct make_signed<__uint128_t> : type_identity<__int128_t> { … };
#endif
make_signed_t;
}
}
#endif