mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-25 15:21:54 +00:00
Workaround broken numeric_limites, part 2 (#1787)
This commit is contained in:
parent
0cc73ebf79
commit
ccf8561cb3
@ -724,13 +724,18 @@ class FMT_API format_error : public std::runtime_error {
|
||||
|
||||
namespace detail {
|
||||
|
||||
template <typename T>
|
||||
constexpr bool is_signed() {
|
||||
return std::numeric_limits<T>::is_signed || std::is_same<T, int128_t>();
|
||||
}
|
||||
|
||||
// Returns true if value is negative, false otherwise.
|
||||
// Same as `value < 0` but doesn't produce warnings if T is an unsigned type.
|
||||
template <typename T, FMT_ENABLE_IF(std::numeric_limits<T>::is_signed)>
|
||||
template <typename T, FMT_ENABLE_IF(is_signed<T>())>
|
||||
FMT_CONSTEXPR bool is_negative(T value) {
|
||||
return value < 0;
|
||||
}
|
||||
template <typename T, FMT_ENABLE_IF(!std::numeric_limits<T>::is_signed)>
|
||||
template <typename T, FMT_ENABLE_IF(!is_signed<T>())>
|
||||
FMT_CONSTEXPR bool is_negative(T) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user