Author: vitek
Date: Mon Jun 16 17:07:34 2008
New Revision: 668353

URL: http://svn.apache.org/viewvc?rev=668353&view=rev
Log:
2008-06-16  Travis Vitek  <[EMAIL PROTECTED]>

        STDCXX-920
        * include/rw/_meta_prop.h: Add is_signed support for floating point
        types accidentally removed in r667396. Fix is_trivial to behave
        correctly for cv-qualified types.


Modified:
    stdcxx/branches/4.3.x/include/rw/_meta_prop.h

Modified: stdcxx/branches/4.3.x/include/rw/_meta_prop.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_prop.h?rev=668353&r1=668352&r2=668353&view=diff
==============================================================================
--- stdcxx/branches/4.3.x/include/rw/_meta_prop.h (original)
+++ stdcxx/branches/4.3.x/include/rw/_meta_prop.h Mon Jun 16 17:07:34 2008
@@ -257,14 +257,15 @@
 template <class _TypeT>
 struct __rw_is_trivial_impl
 {
-    typedef typename __rw_remove_all_extents<_TypeT>::type _TypeU;
+    typedef typename __rw_remove_cv<_TypeT>::type _TypeU;
+    typedef typename __rw_remove_all_extents<_TypeU>::type _TypeV;
 
-    enum { _C_value =    __rw_is_scalar<_TypeU>::value
-                      || __rw_has_trivial_ctor<_TypeU>::value
-                      && __rw_has_trivial_copy<_TypeU>::value
-                      && __rw_has_trivial_dtor<_TypeU>::value
-                      && __rw_has_trivial_assign<_TypeU>::value
-                      && (__rw_is_class<_TypeU>::value || 
__rw_is_union<_TypeU>::value) };
+    enum { _C_value =    __rw_is_scalar<_TypeV>::value
+                      || __rw_has_trivial_ctor<_TypeV>::value
+                      && __rw_has_trivial_copy<_TypeV>::value
+                      && __rw_has_trivial_dtor<_TypeV>::value
+                      && __rw_has_trivial_assign<_TypeV>::value
+                      && (__rw_is_class<_TypeV>::value || 
__rw_is_union<_TypeV>::value) };
 };
 
 /**
@@ -393,6 +394,13 @@
 _RWSTD_TRAIT_SPEC_0_CV(__rw_is_unsigned, unsigned long long);
 #endif   // _RWSTD_NO_LONG_LONG
 
+_RWSTD_TRAIT_SPEC_0_CV(__rw_is_signed,     float);
+_RWSTD_TRAIT_SPEC_0_CV(__rw_is_signed,     double);
+
+#ifndef _RWSTD_NO_LONG_DOUBLE
+_RWSTD_TRAIT_SPEC_0_CV(__rw_is_signed,     long double);
+#endif   // _RWSTD_NO_LONG_DOUBLE
+
 /**
  * UnaryTypeTrait that gets the alignment of _TypeT.
  */


Reply via email to