From cppreference.com
staticconstboolhas_quiet_NaN;(until C++11)staticconstexprboolhas_quiet_NaN;(since C++11)The value of std::numeric_limits<T>::has_quiet_NaN is true for all types T capable of representing the special value “Quiet
”. This constant is meaningful for all floating-point types and is guaranteed to be true if std::numeric_limits<T>::is_iec559==true.
Standard specializations
Tvalue of std::numeric_limits<T>::has_quiet_NaN/* non-specialized */falseboolfalsecharfalsesignedcharfalseunsignedcharfalsewchar_tfalsechar8_t(since C++20)falsechar16_t(since C++11)falsechar32_t(since C++11)falseshortfalseunsignedshortfalseintfalseunsignedintfalselongfalseunsignedlongfalselonglong(since C++11)falseunsignedlonglong(since C++11)falsefloatusually truedoubleusually truelongdoubleusually trueExample
Run this code
#include<limits>#include<print>#include<ratio>template<typename...Types>constexprboolnot_quiet=((notstd::numeric_limits<Types>::has_quiet_NaN)and...);static_assert(not_quiet<bool,char,signedchar,unsignedchar,wchar_t,char8_t,char16_t,char32_t,short,unsignedshort,int,unsignedint,long,unsignedlong,longlong,unsignedlonglong>);static_assert(notstd::numeric_limits<std::nano>::has_quiet_NaN);intmain(){std::println("{}",std::numeric_limits<float>::has_quiet_NaN);}Possible output:
true See also
[static]
returns a quiet NaN value of the given floating-point type
(public static member function)
[static]
identifies floating-point types that can represent the special value “positive infinity”
(public static member constant)
[static]
identifies floating-point types that can represent the special value “signaling not-a-number” (NaN)
(public static member constant)