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