[Bug libstdc++/50441] [C++0x] <type_traits> is missing GNU extension types

joseph at codesourcery dot com gcc-bugzilla@gcc.gnu.org
Sat Sep 17 12:51:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50441

--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-09-17 11:23:43 UTC ---
I have used the term "sui generis extended type" to refer to types such as 
__int128 that share many properties of integer types but are not such 
types (since intmax_t forms part of the ABI and these types are wider than 
intmax_t).  I don't know what that means for type traits.

All the C operations should work fine on __int128, and for __float128 
where applicable (although it isn't possible to write _Complex __float128 
at present since __float128 is not a keyword).  ARM __fp16 is more 
restricted (in general values are promoted to float before arithmetic) and 
IA64 __fpreg is fairly clearly different from normal floating-point types.

See PR 43622 and references therein.  C++ support that should be present 
for such types, both integer-like and floating-point-like (not __fpreg in 
most cases, I suppose) includes typeinfo, numeric_limits (maybe with 
associated built-in macros), I/O (see libquadmath which libgfortran can 
use, and the associated complications of only linking it in static links 
if required) and mathematical functions in general.



More information about the Gcc-bugs mailing list