mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-25 03:55:32 +08:00
d21776ef90
This changes the __numeric_traits primary template to assume its argument is an integer type. For the three floating point types that are supported by __numeric_traits_floating an explicit specialization of __numeric_traits chooses the right base class. This improves the failure mode for using __numeric_traits with an unsupported type. Previously it would use __numeric_traits_floating as the base class, and give somewhat obscure errors for trying to access the static data members. Now it will use __numeric_traits_integer which has a static_assert to check for supported types. As a side effect of this change there is no need to instantiate __conditional_type to decide which base class to use. libstdc++-v3/ChangeLog: * include/ext/numeric_traits.h (__numeric_traits): Change primary template to always derive from __numeric_traits_integer. (__numeric_traits<float>, __numeric_traits<double>) (__numeric_traits<long double>): Add explicit specializations. |
||
---|---|---|
.. | ||
backward | ||
bits | ||
c | ||
c_compatibility | ||
c_global | ||
c_std | ||
debug | ||
decimal | ||
experimental | ||
ext | ||
parallel | ||
precompiled | ||
pstl | ||
std | ||
tr1 | ||
tr2 | ||
Makefile.am | ||
Makefile.in |