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