c++0x vs. tr1 type_traits, round 1

Paolo Carlini pcarlini@suse.de
Wed Apr 25 23:02:00 GMT 2007


Hi,

a couple of quick observations...

>+  template<typename _Tp>
>+    struct has_trivial_default
>+    : public integral_constant<bool, is_pod<_Tp>::value> { };
>+
>+  template<typename _Tp>
>+    struct has_nothrow_default
>+    : public integral_constant<bool, is_pod<_Tp>::value> { };
>  
>
the final names for those facilities are:

    has_trivial_default_constructor
    has_nothrow_default_constructor
    has_trivial_copy_constructor
    has_nothrow_copy_constructor

(I'm going to change all of them to exploit the front-end traits, 
already available).

In general, these issue about TR1 vs C++0x are nasty. Other traits, for 
example, are undergoing subtle semantic changes (for example, I 
implemented __is_base_of consistently with the C++0x semantics and, as 
you can see, for now, for TR1, I'm adjusting it a bit to the TR1 
semantics); likewise for is_convertible_to, which will be different in 
C+++0x (I'm currently working on the front-end support for it).

I wish we manage to find a decently clean solution, which could also 
mean separate files...

Paolo.



More information about the Libstdc++ mailing list