#include<iostream>#include<limits>#include<string_view>template<typename...T>constexprbooldenorm_absent=((std::numeric_limits<T>::has_denorm==std::denorm_absent)and...);static_assert(denorm_absent<bool,char,signedchar,unsignedchar,wchar_t,char8_t,char16_t,char32_t,short,unsignedshort,int,unsignedint,long,unsignedlong,longlong,unsignedlonglong>);autoto_string(std::float_denorm_stylee)->std::string_view{switch(e){casestd::denorm_indeterminate:return"denorm_indeterminate";casestd::denorm_absent:return"denorm_absent";casestd::denorm_present:return"denorm_present";}return"?";}intmain(){std::cout<<to_string(std::numeric_limits<float>::has_denorm)<<'\n';}