std::numeric_limits<T>::has_quiet_NaN - cppreference.com

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

Not-A-Number

”. 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)

[edit]

[static]

identifies floating-point types that can represent the special value “positive infinity”
(public static member constant)

[edit]

[static]

identifies floating-point types that can represent the special value “signaling not-a-number” (NaN)
(public static member constant)

[edit]