Fixed call of overloaded isinf(double&) is ambiguous (issue #284)

This commit is contained in:
Benoit Blanchon
2016-07-19 08:57:19 +02:00
parent 434080572c
commit 7ebff5949f
2 changed files with 29 additions and 0 deletions

View File

@ -6,6 +6,7 @@ HEAD
* Improved speed of float serialization (about twice faster) * Improved speed of float serialization (about twice faster)
* Added `as<JsonArray>()` as a synonym for `as<JsonArray&>()`... (issue #291) * Added `as<JsonArray>()` as a synonym for `as<JsonArray&>()`... (issue #291)
* Fixed `call of overloaded isinf(double&) is ambiguous` (issue #284)
v5.6.2 v5.6.2
------ ------

View File

@ -62,6 +62,20 @@ bool isNaN(T x) {
return isnan(x); return isnan(x);
} }
#if defined(_GLIBCXX_HAVE_ISNANL) && _GLIBCXX_HAVE_ISNANL
template <>
inline bool isNaN<double>(double x) {
return isnanl(x);
}
#endif
#if defined(_GLIBCXX_HAVE_ISNANF) && _GLIBCXX_HAVE_ISNANF
template <>
inline bool isNaN<float>(float x) {
return isnanf(x);
}
#endif
template <typename T> template <typename T>
bool isInfinity(T x) { bool isInfinity(T x) {
// Workaround for libs that #undef isinf // Workaround for libs that #undef isinf
@ -73,6 +87,20 @@ bool isInfinity(T x) {
return isinf(x); return isinf(x);
} }
#if defined(_GLIBCXX_HAVE_ISINFL) && _GLIBCXX_HAVE_ISINFL
template <>
inline bool isInfinity<double>(double x) {
return isinfl(x);
}
#endif
#if defined(_GLIBCXX_HAVE_ISINFF) && _GLIBCXX_HAVE_ISINFF
template <>
inline bool isInfinity<float>(float x) {
return isinff(x);
}
#endif
#if defined(__GNUC__) #if defined(__GNUC__)
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
#pragma GCC diagnostic pop #pragma GCC diagnostic pop