Skip to content

Commit 2f0661c

Browse files
[libc++][math] Remove constrained overloads of std::{isnan, isinf, isfinite} (llvm#106224)
## Why Since llvm#98841 and llvm#98952, the constrained overloads are unused and not needed anymore as we added explicit overloads for all floating point types. I forgot to remove them in the mentioned PRs. ## What Remove them.
1 parent 760b172 commit 2f0661c

File tree

1 file changed

+2
-18
lines changed

1 file changed

+2
-18
lines changed

libcxx/include/__math/traits.h

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include <__type_traits/is_integral.h>
1717
#include <__type_traits/is_signed.h>
1818
#include <__type_traits/promote.h>
19-
#include <limits>
2019

2120
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
2221
# pragma GCC system_header
@@ -45,12 +44,7 @@ _LIBCPP_NODISCARD inline _LIBCPP_HIDE_FROM_ABI bool signbit(_A1) _NOEXCEPT {
4544

4645
// isfinite
4746

48-
template <class _A1, __enable_if_t<is_arithmetic<_A1>::value && numeric_limits<_A1>::has_infinity, int> = 0>
49-
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isfinite(_A1 __x) _NOEXCEPT {
50-
return __builtin_isfinite((typename __promote<_A1>::type)__x);
51-
}
52-
53-
template <class _A1, __enable_if_t<is_arithmetic<_A1>::value && !numeric_limits<_A1>::has_infinity, int> = 0>
47+
template <class _A1, __enable_if_t<is_integral<_A1>::value, int> = 0>
5448
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isfinite(_A1) _NOEXCEPT {
5549
return true;
5650
}
@@ -69,12 +63,7 @@ _LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI boo
6963

7064
// isinf
7165

72-
template <class _A1, __enable_if_t<is_arithmetic<_A1>::value && numeric_limits<_A1>::has_infinity, int> = 0>
73-
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(_A1 __x) _NOEXCEPT {
74-
return __builtin_isinf((typename __promote<_A1>::type)__x);
75-
}
76-
77-
template <class _A1, __enable_if_t<is_arithmetic<_A1>::value && !numeric_limits<_A1>::has_infinity, int> = 0>
66+
template <class _A1, __enable_if_t<is_integral<_A1>::value, int> = 0>
7867
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isinf(_A1) _NOEXCEPT {
7968
return false;
8069
}
@@ -98,11 +87,6 @@ _LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI boo
9887

9988
// isnan
10089

101-
template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>
102-
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(_A1 __x) _NOEXCEPT {
103-
return __builtin_isnan(__x);
104-
}
105-
10690
template <class _A1, __enable_if_t<is_integral<_A1>::value, int> = 0>
10791
_LIBCPP_NODISCARD _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool isnan(_A1) _NOEXCEPT {
10892
return false;

0 commit comments

Comments
 (0)