libstdc++: Use __is_enum built-in trait

This patch replaces is_enum<T>::value with __is_enum built-in trait in
the type_traits header.

libstdc++-v3/ChangeLog:

	* include/std/type_traits (__make_unsigned_selector): Use
	__is_enum built-in trait.
	(__make_signed_selector): Likewise.
	(__underlying_type_impl): Likewise.

Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
This commit is contained in:
Ken Matsui 2023-07-02 18:12:30 -07:00
parent 602e824eec
commit ef42efe373
No known key found for this signature in database

View file

@ -1740,7 +1740,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Select between integral and enum: not possible to be both.
template<typename _Tp,
bool _IsInt = is_integral<_Tp>::value,
bool _IsEnum = is_enum<_Tp>::value>
bool _IsEnum = __is_enum(_Tp)>
class __make_unsigned_selector;
template<typename _Tp>
@ -1900,7 +1900,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Select between integral and enum: not possible to be both.
template<typename _Tp,
bool _IsInt = is_integral<_Tp>::value,
bool _IsEnum = is_enum<_Tp>::value>
bool _IsEnum = __is_enum(_Tp)>
class __make_signed_selector;
template<typename _Tp>
@ -2353,7 +2353,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct __common_type_fold<_CTp, _Rp, void>
{ };
template<typename _Tp, bool = is_enum<_Tp>::value>
template<typename _Tp, bool = __is_enum(_Tp)>
struct __underlying_type_impl
{
using type = __underlying_type(_Tp);