Skip to content

Commit f01f15c

Browse files
committed
Extract signbit constexprness
1 parent f90fccd commit f01f15c

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

libcxx/include/__math/traits.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,25 @@ namespace __math {
2727

2828
// signbit
2929

30-
template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>
31-
_LIBCPP_NODISCARD inline
3230
// TODO(LLVM 22): Remove conditional once support for Clang 19 is dropped.
3331
#if defined(_LIBCPP_COMPILER_GCC) || __has_constexpr_builtin(__builtin_signbit)
34-
_LIBCPP_CONSTEXPR_SINCE_CXX23
32+
# define _LIBCPP_SIGNBIT_CONSTEXPR _LIBCPP_CONSTEXPR_SINCE_CXX23
33+
#else
34+
# define _LIBCPP_SIGNBIT_CONSTEXPR
3535
#endif
36-
_LIBCPP_HIDE_FROM_ABI bool
37-
signbit(_A1 __x) _NOEXCEPT {
36+
37+
template <class _A1, __enable_if_t<is_floating_point<_A1>::value, int> = 0>
38+
_LIBCPP_NODISCARD inline _LIBCPP_SIGNBIT_CONSTEXPR _LIBCPP_HIDE_FROM_ABI bool signbit(_A1 __x) _NOEXCEPT {
3839
return __builtin_signbit(__x);
3940
}
4041

4142
template <class _A1, __enable_if_t<is_integral<_A1>::value && is_signed<_A1>::value, int> = 0>
42-
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool signbit(_A1 __x) _NOEXCEPT {
43+
_LIBCPP_NODISCARD inline _LIBCPP_SIGNBIT_CONSTEXPR _LIBCPP_HIDE_FROM_ABI bool signbit(_A1 __x) _NOEXCEPT {
4344
return __x < 0;
4445
}
4546

4647
template <class _A1, __enable_if_t<is_integral<_A1>::value && !is_signed<_A1>::value, int> = 0>
47-
_LIBCPP_NODISCARD inline _LIBCPP_CONSTEXPR_SINCE_CXX23 _LIBCPP_HIDE_FROM_ABI bool signbit(_A1) _NOEXCEPT {
48+
_LIBCPP_NODISCARD inline _LIBCPP_SIGNBIT_CONSTEXPR _LIBCPP_HIDE_FROM_ABI bool signbit(_A1) _NOEXCEPT {
4849
return false;
4950
}
5051

0 commit comments

Comments
 (0)