You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by vi...@apache.org on 2008/06/17 02:07:34 UTC

svn commit: r668353 - /stdcxx/branches/4.3.x/include/rw/_meta_prop.h

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  <vi...@roguewave.com>

	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.
  */