Return-Path: Delivered-To: apmail-stdcxx-commits-archive@www.apache.org Received: (qmail 30180 invoked from network); 24 Jun 2008 18:56:40 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 24 Jun 2008 18:56:40 -0000 Received: (qmail 89355 invoked by uid 500); 24 Jun 2008 18:56:42 -0000 Delivered-To: apmail-stdcxx-commits-archive@stdcxx.apache.org Received: (qmail 89346 invoked by uid 500); 24 Jun 2008 18:56:42 -0000 Mailing-List: contact commits-help@stdcxx.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@stdcxx.apache.org Delivered-To: mailing list commits@stdcxx.apache.org Received: (qmail 89336 invoked by uid 99); 24 Jun 2008 18:56:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Jun 2008 11:56:42 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 24 Jun 2008 18:55:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D44472388A0C; Tue, 24 Jun 2008 11:55:31 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r671294 - in /stdcxx/branches/4.3.x/include: rw/_meta_arr.h rw/_meta_cat.h rw/_meta_comp.h rw/_meta_cv.h rw/_meta_other.h rw/_meta_prop.h rw/_meta_ptr.h rw/_meta_ref.h rw/_meta_rel.h rw/_meta_sign.h type_traits Date: Tue, 24 Jun 2008 18:55:31 -0000 To: commits@stdcxx.apache.org From: vitek@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080624185531.D44472388A0C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: vitek Date: Tue Jun 24 11:55:30 2008 New Revision: 671294 URL: http://svn.apache.org/viewvc?rev=671294&view=rev Log: 2008-06-24 Travis Vitek STDCXX-916 * include/type_traits: Remove doxygen comments, leaving C++ comments where appropriate. * include/rw/_meta_arr.h: Ditto. * include/rw/_meta_cat.h: Ditto. * include/rw/_meta_comp.h: Ditto. * include/rw/_meta_cv.h: Ditto. * include/rw/_meta_other.h: Ditto. * include/rw/_meta_prop.h: Ditto. * include/rw/_meta_ptr.h: Ditto. * include/rw/_meta_ref.h: Ditto. * include/rw/_meta_rel.h: Ditto. * include/rw/_meta_sign.h: Ditto. (_RWSTD_SHRT_SIZE): Fix spelling error. Modified: stdcxx/branches/4.3.x/include/rw/_meta_arr.h stdcxx/branches/4.3.x/include/rw/_meta_cat.h stdcxx/branches/4.3.x/include/rw/_meta_comp.h stdcxx/branches/4.3.x/include/rw/_meta_cv.h stdcxx/branches/4.3.x/include/rw/_meta_other.h stdcxx/branches/4.3.x/include/rw/_meta_prop.h stdcxx/branches/4.3.x/include/rw/_meta_ptr.h stdcxx/branches/4.3.x/include/rw/_meta_ref.h stdcxx/branches/4.3.x/include/rw/_meta_rel.h stdcxx/branches/4.3.x/include/rw/_meta_sign.h stdcxx/branches/4.3.x/include/type_traits Modified: stdcxx/branches/4.3.x/include/rw/_meta_arr.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_arr.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_arr.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_arr.h Tue Jun 24 11:55:30 2008 @@ -34,32 +34,18 @@ _RWSTD_NAMESPACE (__rw) { -/** - * TransformationTrait strips one dimension from an array type, leaving - * other types as-is. The primary template is for non-array types. - */ template struct __rw_remove_extent { typedef _TypeT type; }; -/** - * TransformationTrait strips one dimension from an array type, leaving - * other types as-is. This specialization is for array types of bounded - * size. - */ template struct __rw_remove_extent<_TypeT [_Size]> { typedef _TypeT type; }; -/** - * TransformationTrait strips one dimension from an array type, leaving - * other types as-is. This specialization is for array types of unbounded - * size. - */ template struct __rw_remove_extent<_TypeT []> { @@ -68,33 +54,18 @@ #define _RWSTD_REMOVE_EXTENT(T) _RW::__rw_remove_extent::type -/** - * TransformationTrait strips one dimension from an array type, leaving - * other types as-is. The primary template is for non-array types. The - * member typedef type will be the same as _TypeT. - */ template struct __rw_remove_all_extents { typedef _TypeT type; }; -/** - * TransformationTrait strips all dimensions from an array type, leaving - * other types as-is. This specialization is for array types of bounded - * size. - */ template struct __rw_remove_all_extents<_TypeT [_Size]> { typedef typename __rw_remove_all_extents<_TypeT>::type type; }; -/** - * TransformationTrait strips one dimension from an array type, leaving - * other types as-is. This specialization is for array types of unbounded - * size. - */ template struct __rw_remove_all_extents<_TypeT []> { Modified: stdcxx/branches/4.3.x/include/rw/_meta_cat.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_cat.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_cat.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_cat.h Tue Jun 24 11:55:30 2008 @@ -66,10 +66,6 @@ struct Trait \ : __rw_integral_constant { } -/** - * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) - * void type. - */ template struct __rw_is_void : __rw_false_type { @@ -80,11 +76,6 @@ #define _RWSTD_IS_VOID(T) _RW::__rw_is_void::value -/** - * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) - * integral type. Integral types include bool, char, wchar_t and all of - * the signed and unsigned integer types. - */ template struct __rw_is_integral : __rw_false_type { @@ -118,11 +109,6 @@ #define _RWSTD_IS_INTEGRAL(T) _RW::__rw_is_integral::value -/** - * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) - * floating point type. The floating point types include float, double - * and long double. - */ template struct __rw_is_floating_point : __rw_false_type { @@ -138,9 +124,6 @@ #define _RWSTD_IS_FLOATING_POINT(T) _RW::__rw_is_floating_point::value -/** - * UnaryTypeTrait to determine if _TypeT is an array type. - */ template struct __rw_is_array : __rw_false_type { @@ -158,10 +141,6 @@ #define _RWSTD_IS_ARRAY(T) _RW::__rw_is_array::value -/** - * UnaryTypeTrait to determine if _TypeT is a (potentially cv-qualified) - * pointer type. - */ template struct __rw_is_pointer : __rw_false_type { @@ -169,13 +148,9 @@ _RWSTD_TRAIT_SPEC_1_CV(__rw_is_pointer, _TypeT*, true); -#define _RWSTD_IS_POINTER(T) \ - _RW::__rw_is_pointer::value +#define _RWSTD_IS_POINTER(T) _RW::__rw_is_pointer::value -/** - * UnaryTypeTrait to determine if _TypeT is a lval reference type. - */ template struct __rw_is_lvalue_reference : __rw_false_type { @@ -190,9 +165,6 @@ _RW::__rw_is_lvalue_reference::value -/** - * UnaryTypeTrait to determine if _TypeT is a rval reference type. - */ template struct __rw_is_rvalue_reference : __rw_false_type { @@ -212,21 +184,14 @@ _RW::__rw_is_rvalue_reference::value -/** - * Class template can be used to determine if _TypeT is an enumeration. - */ template struct __rw_is_enum : __rw_integral_constant { }; -#define _RWSTD_IS_ENUM(T) \ - _RW::__rw_is_enum::value +#define _RWSTD_IS_ENUM(T) _RW::__rw_is_enum::value -/** - * UnaryTypeTrait to determine if _TypeT is a union type. - */ template struct __rw_is_union : __rw_integral_constant @@ -236,9 +201,6 @@ #define _RWSTD_IS_UNION(T) _RW::__rw_is_union::value -/** - * UnaryTypeTrait to determine if _TypeT is a class type. - */ template struct __rw_is_class : __rw_integral_constant @@ -248,15 +210,6 @@ #define _RWSTD_IS_CLASS(T) _RW::__rw_is_class::value -/** - * This template prevents the partial specialization below from - * being instantiated on types for which it would fail or give - * invalid results. i.e. it avoids creating references to void or - * arrays with unknown length and for returning bad results for - * references to functions. - * - * All void, array and reference types are not functions. - */ template ::value || __rw_is_array<_TypeT>::value || __rw_is_lvalue_reference<_TypeT>::value @@ -266,13 +219,6 @@ enum { _C_value = 0 }; }; -/** - * This specialization determines if _TypeT is a function type. This - * is done by testing that a _TypeT is implicitly convertible to a - * pointer to _TypeT. - * - * This special case is only true for functions. - */ template struct __rw_is_function_impl<_TypeT, false> { @@ -290,9 +236,6 @@ enum { _C_value = sizeof (_C_yes) == sizeof (_C_is (0, _C_make ())) }; }; -/** - * UnaryTypeTrait to determine if _TypeT is a function type. - */ template struct __rw_is_function #ifdef _RWSTD_TT_IS_FUNCTION @@ -305,10 +248,6 @@ #define _RWSTD_IS_FUNCTION(T) _RW::__rw_is_function::value -/** - * UnaryTypeTrait to determine if _TypeT is a pointer to member - * object type. - */ template struct __rw_is_member_object_pointer : __rw_false_type { @@ -322,10 +261,6 @@ _RW::__rw_is_member_object_pointer::value -/** - * UnaryTypeTrait to determine if _TypeT is a pointer to member - * function type. - */ template struct __rw_is_member_function_pointer : __rw_false_type { Modified: stdcxx/branches/4.3.x/include/rw/_meta_comp.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_comp.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_comp.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_comp.h Tue Jun 24 11:55:30 2008 @@ -35,10 +35,6 @@ _RWSTD_NAMESPACE (__rw) { -/** - * UnaryTypeTrait indicates that _TypeT is either a lval or - * rval reference type. - */ template struct __rw_is_reference : __rw_integral_constant::value @@ -48,12 +44,6 @@ #define _RWSTD_IS_REFERENCE(T) _RW::__rw_is_reference::value -/** - * UnaryTypeTrait indicates that _TypeT is an arithmethic type. - * - * The arithmetic types include all integral and floating point - * types. - */ template struct __rw_is_arithmetic : __rw_integral_constant::value @@ -63,12 +53,6 @@ #define _RWSTD_IS_ARITHMETIC(T) _RW::__rw_is_arithmetic::value -/** - * UnaryTypeTrait indicates that _TypeT is an fundamental type. - * - * The fundamental types include void and all of the standard - * arithmetic types. - */ template struct __rw_is_fundamental : __rw_integral_constant::value @@ -79,12 +63,6 @@ #define _RWSTD_IS_FUNDAMENTAL(T) _RW::__rw_is_fundamental::value -/** - * UnaryTypeTrait indicates that _TypeT is an object type. - * - * An object is a (possibly cv-qualified) type that is not a - * function type, not a reference type, and not a void type. - */ template struct __rw_is_object : __rw_integral_constant::value @@ -96,13 +74,6 @@ #define _RWSTD_IS_OBJECT(T) _RW::__rw_is_object::value -/** - * UnaryTypeTrait indicates that _TypeT is a member pointer type. - * - * The member pointer types include pointers to member functions and - * pointer to member data. Neither pointers to static member functions - * or pointers to static member data are included. - */ template struct __rw_is_member_pointer : __rw_integral_constant::value @@ -112,13 +83,6 @@ #define _RWSTD_IS_MEMBER_POINTER(T) _RW::__rw_is_member_pointer::value -/** - * UnaryTypeTrait indicates that _TypeT is a scalar type. - * - * The scalar types include arithmetic types, enumeration types, - * pointer types, pointer to member types, std::nullptr_t and - * cv-qualified versions of these types. - */ template struct __rw_is_scalar : __rw_integral_constant::value @@ -126,22 +90,14 @@ || __rw_is_pointer<_TypeT>::value || __rw_is_member_pointer<_TypeT>::value> { - /** - * todo need to handle special case - * - * __rw_is_same::type>::value - */ + // todo need to handle special case + // + // __rw_is_same::type>::value }; #define _RWSTD_IS_SCALAR(T) _RW::__rw_is_scalar::value -/** - * UnaryTypeTrait indicates that _TypeT is a compound type. - * - * The compound types include arrays, functions, pointers, references, - * classes, unions, enumerations, pointer to non-static class members - */ template struct __rw_is_compound : __rw_integral_constant::value Modified: stdcxx/branches/4.3.x/include/rw/_meta_cv.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_cv.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_cv.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_cv.h Tue Jun 24 11:55:30 2008 @@ -36,22 +36,12 @@ _RWSTD_NAMESPACE (__rw) { -/** - * TransformationTrait strips any top level const-qualifier from _TypeT. - * - * The primary template is for non-const types. - */ template struct __rw_remove_const { typedef _TypeT type; }; -/** - * TransformationTrait strips any top level const-qualifier from _TypeT. - * - * This specialization is for const types. - */ template struct __rw_remove_const { @@ -61,22 +51,12 @@ #define _RWSTD_REMOVE_CONST(T) _RW::__rw_remove_const::type -/** - * TransformationTrait strips any top level volatile-qualifier from _TypeT. - * - * The primary template is for non-volatile types. - */ template struct __rw_remove_volatile { typedef _TypeT type; }; -/** - * TransformationTrait strips any top level volatile-qualifier from _TypeT. - * - * This specialization is for volatile types. - */ template struct __rw_remove_volatile { @@ -85,9 +65,6 @@ #define _RWSTD_REMOVE_VOLATILE(T) _RW::__rw_remove_volatile::type -/** - * TransformationTrait strips top level cv-qualifiers from _TypeT. - */ template struct __rw_remove_cv { @@ -112,13 +89,6 @@ typedef const _TypeT _C_type; }; -/** - * TransformationTrait adds a top level const qualifier to _TypeT. - * - * If _TypeT is a reference, function, or top-level const-qualified - * type, then type shall name the same type as _TypeT otherwise it - * shall name const _TypeT. - */ template struct __rw_add_const { @@ -141,13 +111,6 @@ typedef volatile _TypeT _C_type; }; -/** - * TransformationTrait adds a top level volatile qualifier to _TypeT. - * - * If _TypeT is a reference, function, or top-level volatile-qualified - * type, then type shall name the same type as _TypeT otherwise it - * shall name volatile _TypeT. - */ template struct __rw_add_volatile { @@ -157,9 +120,6 @@ #define _RWSTD_ADD_VOLATILE(T) _RW::__rw_add_volatile::type -/** - * Trait adds top level cv-qualifiers to _TypeT. - */ template struct __rw_add_cv { Modified: stdcxx/branches/4.3.x/include/rw/_meta_other.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_other.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_other.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_other.h Tue Jun 24 11:55:30 2008 @@ -37,24 +37,12 @@ _RWSTD_NAMESPACE (__rw) { -/** - * Metaprogramming conditional primitive that provides a member typedef - * _C_type that is _TypeT if _Select is true, otherwise is _TypeU. - * - * The primary template is used when _Select is true. - */ template struct __rw_conditional { typedef _TypeT type; }; -/** - * Metaprogramming conditional primitive that provides a member typedef - * type is _TypeT if _Select is true, otherwise is _TypeU. - * - * This specialization if used when _Select is false. - */ template struct __rw_conditional { @@ -64,10 +52,8 @@ #define _RWSTD_CONDITIONAL(C,T,U) _RW::__rw_conditional::type -/** - * Helper for __rw_aligned_storage. Specializations define a member type - * that is aligned on power of two boundaries. - */ +// Helper for __rw_aligned_storage. Specializations define a member type +// that is aligned on power of two boundaries. template <_RWSTD_SIZE_T _Align> struct __rw_aligned_storage_impl; @@ -91,15 +77,9 @@ _RWSTD_ALIGNED_STORAGE_SPEC(4096); _RWSTD_ALIGNED_STORAGE_SPEC(8192); -/** - * Helper for __rw_default_alignment. The member value will evaluate - * to the nearest power of two that is a valid alignment value that - * is less than or equal to _Size. - * - * @tparam _Size The size of the object to align. - * @tparam _N The power of two value being tested. - * @tparam _Done Termination condition for recursion. Do not use. - */ +// Helper for __rw_default_alignment. The member value will evaluate +// to the nearest power of two that is a valid alignment value that +// is less than or equal to _Size. template <_RWSTD_SIZE_T _Size, _RWSTD_SIZE_T _N, bool _Done = (_RWSTD_TT_MAX_ALIGNMENT <= _N * 2) || (_Size < _N * 2)> @@ -108,29 +88,21 @@ enum { value = __rw_default_alignment_impl<_Size, _N * 2>::value }; }; -/** - * Helper for __rw_default_alignment. The member value will evaluate - * to the nearest power of two that is less than or equal to _Size. - * This specialization is used to terminate recursion. It is only used - * when when _Done in the primary template evaluates is true. - * - * @tparam _Size The size of the object to align. - * @tparam _N The power of two value being tested. - */ +// Helper for __rw_default_alignment. The member value will evaluate +// to the nearest power of two that is less than or equal to _Size. +// This specialization is used to terminate recursion. It is only used +// when when _Done in the primary template evaluates is true. template <_RWSTD_SIZE_T _Size, _RWSTD_SIZE_T _N> struct __rw_default_alignment_impl<_Size, _N, true> { enum { value = _N }; }; -/** - * Helper for __rw_aligned_storage. The value member shall be the most - * most stringent alignment requirement for any C++ object whose size - * is no greater than _Size. This implementation will set value to be - * the nearest power of two value that is less than or equal to _Size. - * - * @tparam _Size Size of the object to calculate the alignment for. - */ + +// Helper for __rw_aligned_storage. The value member shall be the most +// most stringent alignment requirement for any C++ object whose size +// is no greater than _Size. This implementation will set value to be +// the nearest power of two value that is less than or equal to _Size. template <_RWSTD_SIZE_T _Size> struct __rw_default_alignment { @@ -138,9 +110,6 @@ }; -/** - * - */ template <_RWSTD_SIZE_T _Size, _RWSTD_SIZE_T _Align = __rw_default_alignment<_Size>::value> struct __rw_aligned_storage @@ -165,10 +134,8 @@ #ifndef _RWSTD_NO_VARIADIC_TEMPLATES -/** - * Helper for __rw_aligned_union. Provides a typedef type that - * is the largest type in the sequence of provided types. - */ +// Helper for __rw_aligned_union. Provides a typedef type that +// is the largest type in the sequence of provided types. template struct __rw_biggest; @@ -180,7 +147,7 @@ typedef typename __rw_conditional::type type; + _TypeU, _TypeT>::type type; }; template @@ -189,11 +156,9 @@ typedef _TypeT type; }; -/** - * Helper for __rw_aligned_union. Provides a typedef type that - * is the type with the strictest alignment requirement in the - * sequence of provided types. - */ +// Helper for __rw_aligned_union. Provides a typedef type that +// is the type with the strictest alignment requirement in the +// sequence of provided types. template struct __rw_strictest; @@ -250,16 +215,14 @@ __rw_aligned_union<_Len, _Types...>::_C_size_value; # endif // _RWSTD_NO_STATIC_CONST_MEMBER_DEFINITION -#endif +#endif // 0 #else // _RWSTD_NO_VARIADIC_TEMPLATES struct __rw_empty { }; -/** - * Helper for __rw_aligned_union. Provides a typedef type that - * is the largest type in the sequence of provided types. - */ +// Helper for __rw_aligned_union. Provides a typedef type that +// is the largest type in the sequence of provided types. template ::type type; }; -/** - * Helper for __rw_aligned_union. Provides a typedef type that - * is the type with the strictest alignment requirement in the - * sequence of provided types. - */ +// Helper for __rw_aligned_union. Provides a typedef type that +// is the type with the strictest alignment requirement in the +// sequence of provided types. template struct __rw_enable_if { typedef _TypeT type; }; -/** - * Conditional primitive that provides a member typedef type that is - * _TypeT if _Enable is true, otherwise there will be no such typedef. - * - * The specialization provides an implementation for the case that _Enable - * is false. - */ template struct __rw_enable_if { @@ -420,26 +367,12 @@ #define _RWSTD_ENABLE_IF(C,T) _RW::__rw_enable_if::type -/** - * Conditional primitive that provides a member typedef type that is - * _TypeT if _Enable is false, otherwise there will be no such typedef. - * - * The primary template provides an implementation for the case that - * _Enable is false. - */ template struct __rw_disable_if { typedef _TypeT type; }; -/** - * Conditional primitive that provides a member typedef type that is - * _TypeT if _Enable is false, otherwise there will be no such typedef. - * - * The specialization provides an implementation for the case that _Enable - * is false. - */ template struct __rw_disable_if { @@ -448,17 +381,6 @@ #define _RWSTD_DISABLE_IF(C,T) _RW::__rw_disable_if::type -/** - * TransformationTrait that implements compile time array-to-pointer - * conversions and function-to-pointer conversions for the given type - * _TypeT. - * - * Let _TypeU be __rw_remove_ref<_TypeT>::type. If _TypeT is an - * array type, the member typedef type shall equal to the type of - * __rw_remove_extent<_TypeU>::type*. If _TypeT is a function type, - * the member typedef type shall be __rw_add_ptr<_TypeU>::type. - * Otherwise type will be __rw_remove_cv<_TypeU>::type. - */ template struct __rw_decay { 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=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_prop.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_prop.h Tue Jun 24 11:55:30 2008 @@ -44,9 +44,6 @@ template <> struct Trait : __rw_true_type { }; \ template <> struct Trait : __rw_true_type { } -/** - * UnaryTypeTrait indicates that _TypeT is const-qualified. - */ template struct __rw_is_const : __rw_false_type { @@ -60,9 +57,6 @@ #define _RWSTD_IS_CONST(T) _RW::__rw_is_const::value -/** - * UnaryTypeTrait indicates that _TypeT is volatile-qualified. - */ template struct __rw_is_volatile : __rw_false_type { @@ -120,12 +114,6 @@ -/** - * UnaryTypeTrait indicates that _TypeT is a standard layout type. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified) - */ template struct __rw_is_standard_layout : __rw_integral_constant @@ -138,12 +126,6 @@ #define _RWSTD_IS_STANDARD_LAYOUT(T) _RW::__rw_is_standard_layout::value -/** - * UnaryTypeTrait indicates that _TypeT is a pod type. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified) - */ template struct __rw_is_pod : __rw_integral_constant @@ -156,12 +138,6 @@ #define _RWSTD_IS_POD(T) _RW::__rw_is_pod::value -/** - * UnaryTypeTrait indicates that _TypeT is an empty type. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_is_empty : __rw_integral_constant @@ -174,12 +150,6 @@ #define _RWSTD_IS_EMPTY(T) _RW::__rw_is_empty::value -/** - * UnaryTypeTrait indicates that _TypeT is a polymorphic type. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_is_polymorphic : __rw_integral_constant @@ -192,12 +162,6 @@ #define _RWSTD_IS_POLYMORPHIC(T) _RW::__rw_is_polymorphic::value -/** - * UnaryTypeTrait indicates that _TypeT is an abstract type. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_is_abstract : __rw_integral_constant @@ -210,12 +174,6 @@ #define _RWSTD_IS_ABSTRACT(T) _RW::__rw_is_abstract::value -/** - * UnaryTypeTrait indicates that _TypeT has a trivial default constructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_trivial_ctor : __rw_integral_constant @@ -228,12 +186,6 @@ #define _RWSTD_HAS_TRIVIAL_CTOR(T) _RW::__rw_has_trivial_ctor::value -/** - * UnaryTypeTrait indicates that _TypeT has a trivial copy constructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_trivial_copy : __rw_integral_constant @@ -246,12 +198,6 @@ #define _RWSTD_HAS_TRIVIAL_COPY(T) _RW::__rw_has_trivial_copy::value -/** - * UnaryTypeTrait indicates that _TypeT has a trivial assignment operator. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_trivial_assign : __rw_integral_constant @@ -264,12 +210,6 @@ #define _RWSTD_HAS_TRIVIAL_ASSIGN(T) _RW::__rw_has_trivial_assign::value -/** - * UnaryTypeTrait indicates that _TypeT has a trivial destructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_trivial_dtor : __rw_integral_constant @@ -282,10 +222,6 @@ #define _RWSTD_HAS_TRIVIAL_DTOR(T) _RW::__rw_has_trivial_dtor::value -/** - * UnaryTypeTrait indicates that _TypeT is a trivial type or - * an array of trivial type. - */ template struct __rw_is_trivial_impl { @@ -300,16 +236,6 @@ && (__rw_is_class<_TypeV>::value || __rw_is_union<_TypeV>::value) }; }; -/** - * UnaryTypeTrait indicates that _TypeT is a trivial type or an array of - * trivial type. - * - * Trivial types include scalar types, and trivial class types. A trivial - * class type has a trivial default ctor, copy ctor, operator= and dtor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_is_trivial : __rw_integral_constant::_C_value> @@ -321,12 +247,6 @@ #define _RWSTD_IS_TRIVIAL(T) _RW::__rw_is_trivial::value -/** - * UnaryTypeTrait to determine if _TypeT has a nothrow default constructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_nothrow_ctor : __rw_integral_constant @@ -339,12 +259,6 @@ #define _RWSTD_HAS_NOTHROW_CTOR(T) _RW::__rw_has_nothrow_ctor::value -/** - * UnaryTypeTrait indicates that _TypeT has a nothrow copy constructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_nothrow_copy : __rw_integral_constant @@ -357,12 +271,6 @@ #define _RWSTD_HAS_NOTHROW_COPY(T) _RW::__rw_has_nothrow_copy::value -/** - * UnaryTypeTrait indicates that _TypeT has a nothrow assignment operator. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_nothrow_assign : __rw_integral_constant @@ -375,12 +283,6 @@ #define _RWSTD_HAS_NOTHROW_ASSIGN(T) _RW::__rw_has_nothrow_assign::value -/** - * UnaryTypeTrait indicates that _TypeT has a virtual destructor. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_has_virtual_dtor : __rw_integral_constant @@ -393,17 +295,11 @@ #define _RWSTD_HAS_VIRTUAL_DTOR(T) _RW::__rw_has_virtual_dtor::value -/** - * UnaryTypeTrait that indicates that _TypeT is an unsigned type. - */ template struct __rw_is_unsigned : __rw_false_type { }; -/** - * UnaryTypeTrait that indicates that _TypeT is a signed type. - */ template struct __rw_is_signed : __rw_false_type { @@ -451,9 +347,6 @@ #define _RWSTD_IS_UNSIGNED(T) _RW::__rw_is_unsigned::value -/** - * UnaryTypeTrait that gets the alignment of _TypeT. - */ template struct __rw_alignment_of : __rw_integral_constant<_RWSTD_SIZE_T, _RWSTD_TT_ALIGN_OF(_TypeT)> @@ -465,33 +358,18 @@ #define _RWSTD_ALIGNMENT_OF(T) _RW::__rw_alignment_of::value -/** - * UnaryTypeTrait gives the number of dimensions of the type _TypeT, if - * _TypeT is an array, otherwise 0. The primary template is for non-array - * types. - */ template struct __rw_rank : __rw_integral_constant<_RWSTD_SIZE_T, 0> { }; -/** - * UnaryTypeTrait gives the number of dimensions of the type _TypeT, if - * _TypeT is an array, otherwise 0. The primary template is for bounded - * -array types. - */ template struct __rw_rank<_TypeT [_Size]> : __rw_integral_constant<_RWSTD_SIZE_T, 1 + __rw_rank<_TypeT>::value> { }; -/** - * UnaryTypeTrait gives the number of dimensions of the type _TypeT, if - * _TypeT is an array, otherwise 0. The primary template is for unbounded - * -array types. - */ template struct __rw_rank<_TypeT []> : __rw_integral_constant<_RWSTD_SIZE_T, 1 + __rw_rank<_TypeT>::value> @@ -501,9 +379,6 @@ #define _RWSTD_RANK(T) _RW::__rw_rank::value -/** - * UnaryTypeTrait gives the size of the _Depth dimension of _TypeT. - */ template struct __rw_extent : __rw_integral_constant<_RWSTD_SIZE_T, 0> Modified: stdcxx/branches/4.3.x/include/rw/_meta_ptr.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_ptr.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_ptr.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_ptr.h Tue Jun 24 11:55:30 2008 @@ -35,20 +35,12 @@ _RWSTD_NAMESPACE (__rw) { -/** - * TransformationTrait strips a single level of pointer indirection from - * _TypeT. The primary template is for non-pointer types. - */ template struct __rw_remove_pointer { typedef _TypeT type; }; -/** - * TransformationTrait adds a single level of pointer indirection to - * _TypeT. This specialization is for pointer types. - */ template struct __rw_remove_pointer<_TypeT*> { @@ -57,10 +49,6 @@ #define _RWSTD_REMOVE_POINTER(T) _RW::__rw_remove_pointer::type -/** - * TransformationTrait adds a single level of pointer indirection to - * _TypeT. - */ template struct __rw_add_pointer { Modified: stdcxx/branches/4.3.x/include/rw/_meta_ref.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_ref.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_ref.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_ref.h Tue Jun 24 11:55:30 2008 @@ -36,24 +36,12 @@ _RWSTD_NAMESPACE (__rw) { -/** - * TransformationTrait strips any top level reference specifier - * from _TypeT. - * - * The primary template is for non-reference types. - */ template struct __rw_remove_reference { typedef _TypeT type; }; -/** - * TransformationTrait strips any top level reference specifier - * from _TypeT. - * - * This specialization is for lvalue reference types. - */ template struct __rw_remove_reference<_TypeT&> { @@ -62,12 +50,6 @@ #ifndef _RWSTD_NO_RVALUE_REFERENCES -/** - * TransformationTrait strips any top level reference specifier - * from _TypeT. - * - * This specialization is for rval reference types. - */ template struct __rw_remove_reference<_TypeT&&> { @@ -104,9 +86,6 @@ typedef _TYPENAME __rw_remove_reference<_TypeT>::type& _C_type; }; -/** - * TransformationTrait adds a lvalue reference to the input type _TypeT. - */ template struct __rw_add_lvalue_reference { Modified: stdcxx/branches/4.3.x/include/rw/_meta_rel.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_rel.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_rel.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_rel.h Tue Jun 24 11:55:30 2008 @@ -40,25 +40,11 @@ _RWSTD_NAMESPACE (__rw) { -/** - * UnaryTypeTrait indicates that the given types _TypeT and _TypeU are - * the same type, including cv-qualifiers. - * - * The primary template is for the case that _TypeT and _TypeU are indeed - * different types. - */ template struct __rw_is_same : __rw_false_type { }; -/** - * UnaryTypeTrait indicates that the given types _TypeT and _TypeU are - * the same type, including cv-qualifiers. - * - * This specialization is for the case that _TypeT and _TypeU are exactly - * the same types. - */ template struct __rw_is_same<_TypeT, _TypeT> : __rw_true_type { @@ -66,14 +52,6 @@ #define _RWSTD_IS_SAME(T,U) _RW::__rw_is_same::value -/** - * BinaryTypeTrait indicates that _TypeT is a base class of _TypeU - * or _TypeT and _TypeU are not unions and name the same class type, - * without regard to cv-qualifiers. - * - * If _TypeT and _TypeU are class types and are different types, without - * regard to cv-qualifiers, then _TypeT shall be a complete type. - */ template struct __rw_is_base_of : __rw_integral_constant @@ -87,9 +65,6 @@ #define _RWSTD_IS_BASE_OF(T,U) _RW::__rw_is_base_of::value -/** - * Primitive type trait tells us if we can create a _TypeU from a _TypeT. - */ template struct __rw_is_convertible_impl { @@ -177,13 +152,6 @@ enum { _C_value = 1 }; }; -/** - * BinaryTypeTrait indicates that _TypeT is convertible to _TypeU - * using only implicit conversions. - * - * _TypeT shall be a complete type, an array of unknown bound, or void - * (possibly cv-qualified). - */ template struct __rw_is_convertible #ifdef _RWSTD_TT_IS_CONVERTIBLE Modified: stdcxx/branches/4.3.x/include/rw/_meta_sign.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/rw/_meta_sign.h?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/rw/_meta_sign.h (original) +++ stdcxx/branches/4.3.x/include/rw/_meta_sign.h Tue Jun 24 11:55:30 2008 @@ -38,10 +38,8 @@ _RWSTD_NAMESPACE (__rw) { -/** - * Provides typedefs mapping non-boolean integral types to signed - * and unsigned integral types of the same base type. - */ +// Provides typedefs mapping non-boolean integral types to signed +// and unsigned integral types of the same base type. template struct __rw_sign_helper { @@ -71,7 +69,7 @@ # if (_RWSTD_WCHAR_SIZE == _RWSTD_CHAR_SIZE) typedef unsigned char _C_Uint; -# elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHORT_SIZE) +# elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHRT_SIZE) typedef unsigned short _C_Uint; # elif (_RWSTD_WCHAR_SIZE == _RWSTD_INT_SIZE) typedef unsigned int _C_Uint; @@ -85,7 +83,7 @@ # if (_RWSTD_WCHAR_SIZE == _RWSTD_CHAR_SIZE) typedef signed char _C_Sint; -# elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHORT_SIZE) +# elif (_RWSTD_WCHAR_SIZE == _RWSTD_SHRT_SIZE) typedef signed short _C_Sint; # elif (_RWSTD_WCHAR_SIZE == _RWSTD_INT_SIZE) typedef signed int _C_Sint; @@ -177,10 +175,8 @@ #endif // !_RWSTD_NO_LONG_LONG -/** - * Class template provides typedefs mapping enumeration types to integral - * types of the same size. - */ +// Class template provides typedefs mapping enumeration types +// to integral types of the same size. template <_RWSTD_SIZE_T _Size> struct __rw_enum_helper { @@ -233,18 +229,6 @@ # endif // _RWSTD_LONG_SIZE != _RWSTD_LLONG_SIZE #endif // !_RWSTD_NO_LONG_LONG -/** - * If _TypeT names a (possibly cv-qualified) signed integral type then the - * member typedef type shall name the type _TypeT. Otherwise, if _TypeT - * names a (possibly cv-qualified) unsigned integral type, then type shall - * name the corresponding signed integral type with the same cv-qualifiers - * as _TypeT. Otherwise, _TypeT shall name the signed integral type with - * the smallest rank for which sizeof(_TypeT) == sizeof(_C_type), with the - * same cv-qualifiers as _TypeT. - * - * note requires _TypeT shall be a (possibly cv-qualified) integral or - * enum type, but not a bool type. - */ template struct __rw_make_signed { @@ -278,18 +262,6 @@ #define _RWSTD_MAKE_SIGNED(T) _RW::__rw_make_signed::type -/** - * If _TypeT names a (possibly cv-qualified) unsigned integral type then the - * member typedef type shall name the type _TypeT. Otherwise, if _TypeT - * names a (possibly cv-qualified) ununsigned integral type, then type shall - * name the corresponding unsigned integral type with the same cv-qualifiers - * as _TypeT. Otherwise, _TypeT shall name the unsigned integral type with - * the smallest rank for which sizeof(_TypeT) == sizeof(_C_type), with the - * same cv-qualifiers as _TypeT. - * - * note requires _TypeT shall be a (possibly cv-qualified) integral or - * enum type, but not a bool type. - */ template struct __rw_make_unsigned { Modified: stdcxx/branches/4.3.x/include/type_traits URL: http://svn.apache.org/viewvc/stdcxx/branches/4.3.x/include/type_traits?rev=671294&r1=671293&r2=671294&view=diff ============================================================================== --- stdcxx/branches/4.3.x/include/type_traits (original) +++ stdcxx/branches/4.3.x/include/type_traits Tue Jun 24 11:55:30 2008 @@ -50,171 +50,11 @@ _RWSTD_NAMESPACE (std) { -/** - * @defgroup meta_help Helper classes [meta.help] - */ - -/** - * @defgroup meta_unary Unary Type Traits [meta.unary] - * - * A UnaryTypeTrait describes a property of a type. It shall be a - * class template that takes one template type argument and, optionally, - * additional arguments that help define the property being described. - * It shall be DefaultConstructible, CopyConstructible, and publicly - * derived, directly or indirectly, from a specialization of the template - * integral_constant, with the arguments to the template integral_constant - * determined by the requirements for the particular property being - * described. - * - * This sub-clause contains templates that may be used to query the - * properties of a type at compile time. - * - * Each of these templates shall be a UnaryTypeTrait, publicly derived - * directly or indirectly from true_type if the corresponding condition - * is true, otherwise from false_type. - */ - -/** - * @defgroup meta_unary_cat Primary Type Categories [meta.unary.cat] - * @ingroup meta_unary - * - * These type categories correspond to the descriptions given in section - * [basic.types] of the C++ standard. - * - * For any given type T, the result of applying one of these templates - * to T and to cv-qualified T shall yield the same result. - * - * @note For any given type T, exactly one of the primary type - * categories has a \c value member that evaluates to true. - */ - -/** - * @defgroup meta_unary_comp Composite Type Categories [meta.unary.comp] - * @ingroup meta_unary - * - * These templates provide convenient compositions of the primary type - * categories. - * - * For any given type T, the result of applying one of these templates - * to T, and to cv-qualified T shall yield the same result. - */ - -/** - * @defgroup meta_unary_prop Type Properties [meta.unary.prop] - * @ingroup meta_unary - * - * These templates provide access to some of the more important properties - * of types. - * - * It is unspecified whether the library defines any full or partial - * specialisations of any of these templates. A program may specialise - * any of these templates on a user-defined type, provided the semantics - * of the specialisation match those given for the template in its - * description. - * - * For all of the class templates X declared in this clause, instantiating - * that template with a template-argument that is a class template - * specialization may result in the implicit instantiation of the template - * argument if and only if the semantics of X require that the argument - * must be a complete type. - */ - -/** - * @defgroup meta_rel Relationships between types [meta.rel] - * - * This sub-clause contains templates that may be used to query - * relationships between types at compile time. - * - * Each of these templates shall be a BinaryTypeTrait, publicly - * derived directly or indirectly from true_type if the - * corresponding condition is true, otherwise from false_type. - */ - -/** - * @defgroup meta_trans Transformations between types [meta.trans] - * - * A TransformationTrait modifies a property of a type. It shall - * be a class template that takes one template type argument and, - * optionally, additional arguments that help define the modification. - * It shall define a nested type named type, which shall be a synonym - * for the modified type. - * - * This sub-clause contains templates that may be used to transform - * one type to another following some predefined rule. - * - * Each of the templates in this subclause shall be a - * TransformationTrait. - */ - -/** - * @defgroup meta_trans_cv Const-volatile modifications [meta.trans.cv] - * @ingroup meta_trans - * - * This sub-clause contains templates used to add and remove const - * and volatile qualifiers from types. - */ - -/** - * @defgroup meta_trans_ref Reference modification [meta.trans.ref] - * @ingroup meta_trans - * - * This sub-clause contains templates used to add and remove reference - * semantics from types. - */ - -/** - * @defgroup meta_trans_sign Sign modifications [meta.trans.sign] - * @ingroup meta_trans - * - * This sub-clause contains templates used to transform from signed - * to unsigned representation or vice-versa. - */ - -/** - * @defgroup meta_trans_arr Array modifications [meta.trans.arr] - * @ingroup meta_trans - * - * This sub-clause contains templates used to manage array types. - */ - -/** - * @defgroup meta_trans_pointer Pointer modifications [meta.trans.ptr] - * @ingroup meta_trans - * - * This sub-clause contains templates used to manage pointer types. - */ - -/** - * @defgroup meta_trans_other Other transformations [meta.trans.other] - * @ingroup meta_trans - */ - -/** - * @ingroup meta_help - * - * The class template integral_constant and its associated typedefs - * true_type and false_type are used as base classes to define the - * interface for various type traits. - * - * @tparam _TypeT The type of the integral constant value. - * @tparam _Value The value of the integral constant. - */ template struct integral_constant { - /** - * Describes the type of this integral_constant. - */ typedef integral_constant<_TypeT,_Value> type; - - /** - * Describes the type of the value defined by this integral_constant. - */ typedef _TypeT value_type; - - /** - * The actual integral constant value. - */ static const _TypeT value = _Value; }; @@ -225,983 +65,363 @@ #endif // _RWSTD_NO_STATIC_CONST_MEMBER_DEFINITION -/** - * @ingroup meta_help - * - * Convenience typedef that are intended to be used as a base class - * for boolean type traits that are true. - */ typedef integral_constant true_type; - -/** - * @ingroup meta_help - * - * Convenience typedef that are intended to be used as a base class - * for boolean type traits that are false. - */ typedef integral_constant false_type; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is void or a cv-qualified - * void. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_void : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is an integral type. - * Types \c bool, \c char, \c wchar_t, and the signed and unsigned - * integer types are collectively called integral types. The signed - * and unsigned integer types include signed and unsigned versions - * of \c char, \c short, \c int, \c long and \c long \c long. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_integral : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * * \e UnaryTypeTrait to determine if _TypeT is a floating point type. - * - * Types \c float, \c double, \c long \c double, and cv-qualified versions - * of those types make up the set of floating point types. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_floating_point : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is an array type. Array types - * include both arrays of bounded and unbounded length. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_array : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a pointer type. - * Includes function pointers, but not pointers to non-static member - * functions. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_pointer : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is an lvalue reference type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_lvalue_reference : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is an rvalue reference type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_rvalue_reference : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a reference type. - * - * @note References to functions are still references, not functions. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_reference : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a pointer to non-static - * member. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_member_object_pointer : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a pointer to non-static - * member function. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_member_function_pointer : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is an enumeration type. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_enum : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a union type - * - * @note This may not be accurate if the necessary compiler support - * is not available. - */ template struct is_union : integral_constant::value > { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a class type but not - * a union type. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * @note a C++ struct is of class type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_class : integral_constant::value> { }; -/** - * @ingroup meta_unary_cat - * - * \e UnaryTypeTrait to determine if _TypeT is a function type. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_function : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is an arithmetic type. - * Arithmetic types include both integral and floating point types. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_arithmetic : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is a fundamental type. - * Fundamental types are all the types provided natively. These types - * include all arithmetic types and all void types. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_fundamental : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is an object type. - * An object type is a (possibly cv-qualified) type that is not - * a function type, not a reference type, and not a void type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_object : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is a scalar type. - * Arithmetic types, enumeration types, pointer types, pointer - * to member types, and cv-qualified versions of these types are - * collectively called scalar types. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_scalar : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is a compound type. - * Compound types are arrays, functions, pointers, references, - * classes, unions, enumerations and pointers to non-static class - * members. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_compound : integral_constant::value> { }; -/** - * @ingroup meta_unary_comp - * - * \e UnaryTypeTrait to determine if _TypeT is a pointer to a member - * object or pointer to member function type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_member_pointer : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is const-qualified. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_const : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is volatile-qualified. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_volatile : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a trivial type. Scalar - * types, trivial class types, arrays of such types and cv-qualified - * versions of these types are collectively called trival types. Trivial - * class types have a trivial default constructor, a trivial destructor - * a trivial copy constructor and a trivial copy assignment operator. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_trivial : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a type with standard - * layout. Scalar types, standard-layout class types, arrays of such - * types and cv-qualified versions of these types are collectively - * called standard layout types. Standard layout class types have no - * non-static data members of non-standard-layout class or reference. - * They have no virtual functions and no virtual base classes, use the - * same access control for all non-static data members, have no base - * classes of non-standard-layout type, no non-static data members in - * the most-derived class and at most one base class with non-static - * data members or has no base classes with non-static data members. - * Finally, a standard-layout class has no base classes of the same - * type as the first non-static data member. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_standard_layout : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a plain-old-data type. - * Scalar types, pod classes, arrays of such types and cv-qualified - * versions of these types are collectively called pod types. The pod - * class types meet the requirements of both trivial and standard layout - * types and have no non-static data members of non-pod type. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_pod : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is an empty class. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_empty : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a polymorphic class. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_polymorphic : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is an abstract class. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct is_abstract : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a trivial type or a - * class type with a trivial default constructor, or an array of - * such a class type. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_trivial_default_constructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a trivial type, a - * reference type, or a class type with a trivial copy constructor. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_trivial_copy_constructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is neither const nor a - * reference type and is a trivial type or a class type with a trivial - * assignment operator. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_trivial_assign : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a trivial type, a reference - * type, or a class type with a trivial destructor, or an array of such a - * class type. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_trivial_destructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if the default constructor for _TypeT - * has an empty exception specification or can otherwise be deduced to - * never throw an exception. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_nothrow_default_constructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if the copy constructor for _TypeT has - * an empty exception specification or can otherwise be deduced to never - * throw an exception. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_nothrow_copy_constructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if the assignment operator has an empty - * exception specification or can otherwise be deduced never to throw an - * exception. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_nothrow_assign : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT has a virtual destructor. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to evaluate. Shall be a complete type, - * an array of unknown bound, or possibly cv-qualified void. - */ template struct has_virtual_destructor : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is a signed arithmetic - * type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_signed : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if _TypeT is an unsigned arithmetic - * type. - * - * @tparam _TypeT The type to evaluate. - */ template struct is_unsigned : integral_constant::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine the alignment of objects of type - * _TypeT. - * - * @note This may not be accurate if the necessary compiler support - * is not available. - * - * @tparam _TypeT The type to evaluate. - */ template struct alignment_of : integral_constant<_RWSTD_SIZE_T, _RW::__rw_alignment_of<_TypeT>::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine the rank of objects of type _TypeT. - * If _TypeT names an array type, the rank is an integer value that - * represents the number of dimensions of _TypeT, otherwise the value - * is 0. - * - * @tparam _TypeT The type to evaluate. - */ template struct rank : integral_constant<_RWSTD_SIZE_T, _RW::__rw_rank<_TypeT>::value> { }; -/** - * @ingroup meta_unary_prop - * - * \e UnaryTypeTrait to determine if the extent of one dimension of - * objects of type _TypeT. If _TypeT is an array type with rank greater - * than _Bound, the value will be the size of the given dimension of - * that array, otherwise the value is 0. - * - * @tparam _TypeT The type to evaluate. - * @tparam _Bound The dimension of the array to get the extent of. - */ template struct extent : integral_constant<_RWSTD_SIZE_T, _RW::__rw_extent<_TypeT, _Bound>::value> { }; -/** - * @ingroup meta_rel - * - * \e UnaryTypeTrait to determine if _TypeT and _TypeU are exactly the - * same type. - * - * @tparam _TypeT The first type to compare. - * @tparam _TypeT The second type to compare. - */ template struct is_same : integral_constant::value> { }; -/** - * @ingroup meta_rel - * - * \e BinaryyTypeTrait to determine if _TypeT is a base class of _TypeU - * or _TypeT and _TypeU name the same non-union class type without regard - * to cv-qualifiers. - * - * @note Base classes that are private, protected or ambiguous are, - * nonetheless, base classes. - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The base type. - * @tparam _TypeU The derived type. - */ template struct is_base_of : integral_constant::value> { }; -/** - * @ingroup meta_rel - * - * \e BinaryTypeTrait to determine if lvalue of type _TypeT is implicitly - * convertible to _TypeU ([conv]). - * - * @note This may not be accurate for class types if the necessary - * compiler support is not available. - * - * @tparam _TypeT The type to test conversion from. - * @tparam _TypeT The type to test conversion to. - */ template struct is_convertible : integral_constant::value> { }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to remove any top-level const-qualifier. - * The member typedef \c type shall be the same as _TypeT except that - * any top level const-qualifier has been removed. - * - * @tparam _TypeT The type to transform. - */ template struct remove_const { typedef _TYPENAME _RW::__rw_remove_const<_TypeT>::type type; }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to remove any top-level volatile-qualifier. - * The member typedef \c type shall be the same as _TypeT except that - * any top level volatile-qualifier has been removed. - * - * @tparam _TypeT The type to transform. - */ template struct remove_volatile { typedef _TYPENAME _RW::__rw_remove_volatile<_TypeT>::type type; }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to remove any top-level cv-qualifiers. The - * member typedef \c type shall be the same as _TypeT except that any - * top level cv-qualifier has been removed. - * - * @tparam _TypeT The type to transform. - */ template struct remove_cv { typedef _TYPENAME _RW::__rw_remove_cv<_TypeT>::type type; }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to add a top-level const-qualifier. If - * _TypeT is a reference, function, or other type level const- - * qualified type then \c type shall be the same as _TypeT, - * otherwise _TypeT const. - * - * @tparam _TypeT The type to transform. - */ template struct add_const { typedef _TYPENAME _RW::__rw_add_const<_TypeT>::type type; }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to add a top-level volatile-qualifier. - * If _TypeT is a reference, function, or other type level volatile- - * qualified type then \c type shall be the same as _TypeT, - * otherwise _TypeT volatile. - * - * @tparam _TypeT The type to transform. - */ template struct add_volatile { typedef _TYPENAME _RW::__rw_add_volatile<_TypeT>::type type; }; -/** - * @ingroup meta_trans_cv - * - * \e TransformationTrait to add a top-level const and volatile-qualifier. - * - * @tparam _TypeT The type to transform. - */ template struct add_cv { typedef _TYPENAME _RW::__rw_add_cv<_TypeT>::type type; }; -/** - * @ingroup meta_trans_ref - * - * \e TransformationTrait to remove a reference from _TypeT. - * - * The member typedef \c type shall be the same as _TypeT, except - * any reference qualifier has been removed. - * - * @tparam _TypeT The type to transform. - */ template struct remove_reference { typedef _TYPENAME _RW::__rw_remove_reference<_TypeT>::type type; }; -/** - * @ingroup meta_trans_ref - * - * \e TransformationTrait to add a reference to _TypeT. - * - * @tparam _TypeT The type to transform. - */ template struct add_lvalue_reference { typedef _TYPENAME _RW::__rw_add_lvalue_reference<_TypeT>::type type; }; -/** - * @ingroup meta_trans_ref - * - * \e TransformationTrait to add an rvalue-reference to _TypeT. - * - * @tparam _TypeT The type to transform. - */ template struct add_rvalue_reference { typedef _TYPENAME _RW::__rw_add_rvalue_reference<_TypeT>::type type; }; -/** - * @ingroup meta_trans_sign - * - * \e TransformationTrait to get a signed type from an enum or non- - * boolean integral type. - * - * @tparam _TypeT The type to transform. - */ template struct make_signed { typedef _TYPENAME _RW::__rw_make_signed<_TypeT>::type type; }; -/** - * @ingroup meta_trans_sign - * - * \e TransformationTrait to get an unsigned type from an enum or non- - * boolean integral type. - * - * @tparam _TypeT The type to transform. - */ template struct make_unsigned { typedef _TYPENAME _RW::__rw_make_unsigned<_TypeT>::type type; }; -/** - * @ingroup meta_trans_arr - * - * \e TransformationTrait to remove a dimension from the type _TypeT. - * If _TypeT is 'array of _TypeU', the member typedef \c type shall - * be _TypeU, otherwise _TypeT. - * - * @tparam _TypeT The type to transform. - */ template struct remove_extent { typedef _TYPENAME _RW::__rw_remove_extent<_TypeT>::type type; }; -/** - * @ingroup meta_trans_arr - * - * \e TransformationTrait to remove all dimensions from the type - * _TypeT. If _TypeT is 'multi-dimensional array of _TypeU', the - * member typedef \c type shall be _TypeU otherwise _TypeT. - * - * @tparam _TypeT The type to transform. - */ template struct remove_all_extents { typedef _TYPENAME _RW::__rw_remove_all_extents<_TypeT>::type type; }; -/** - * @ingroup meta_trans_pointer - * - * \e TransformationTrait to remove a pointer from the type _TypeT. - * The member typedef \c type shall be the same as _TypeT, except - * any top level indirection has been removed. - * - * @note pointers to members are left unchanged. - * - * @tparam _TypeT The type to transform. - */ template struct remove_pointer { typedef _TYPENAME _RW::__rw_remove_pointer<_TypeT>::type type; }; -/** - * @ingroup meta_trans_pointer - * - * \e TransformationTrait to add a pointer to the type _TypeT. - * - * @tparam _TypeT The type to transform. - */ template struct add_pointer { typedef _TYPENAME _RW::__rw_add_pointer<_TypeT>::type type; }; -/** - * @ingroup meta_trans_other - * - * Special trait the defines a nested pod type that is suitable for - * use as uninitialized storage for any object whose size is at most - * _Len and alignment is a divisor of align. - * - * @tparam _Len The minimum size of the aligned storage. Shall not be 0. - * @tparam _Align The alignment of the aligned storage. Shall be equal - * to alignment_of for some type T or not provided. The implementation - * requires that the alignment value be a non-zero power of two that is - * less than the maximum supported extended alignment. - */ template <_RWSTD_SIZE_T _Len, _RWSTD_SIZE_T _Align = _RW::__rw_default_alignment<_Len>::value> struct aligned_storage @@ -1211,16 +431,6 @@ #ifndef _RWSTD_NO_VARIADIC_TEMPLATES -/** - * @ingroup meta_trans_other - * - * Special trait the defines a nested pod type that is suitable for - * use as uninitialized storage for any object whose type is listed - * in _Types and whose size is at most _Len. - * - * @tparam _Len The minimum size of the aligned storage. - * @tparam _Types List of types which might be stored. - */ template <_RWSTD_SIZE_T _Len, class _TypeT, class... _Types> struct aligned_union : _RW::__rw_aligned_union<_Len, _TypeT, _Types...> @@ -1229,23 +439,6 @@ #else -/** - * @ingroup meta_trans_other - * - * Special trait the defines a nested pod type that is suitable for - * use as uninitialized storage for any object whose type is listed - * in _Types and whose size is at most _Len. - * - * @tparam _Len The minimum size of the aligned storage. - * @tparam _Type1 Type which might be stored. - * @tparam _Type2 Type which might be stored. - * @tparam _Type3 Type which might be stored. - * @tparam _Type4 Type which might be stored. - * @tparam _Type5 Type which might be stored. - * @tparam _Type6 Type which might be stored. - * @tparam _Type7 Type which might be stored. - * @tparam _Type8 Type which might be stored. - */ template <_RWSTD_SIZE_T _Len, class _Type1 , class _Type2 = _RW::__rw_empty, class _Type3 = _RW::__rw_empty, class _Type4 = _RW::__rw_empty, @@ -1260,35 +453,12 @@ #endif -/** - * @ingroup meta_trans_other - * - * \e TransformationTrait to do array-to-pointer and function-to-pointer - * type conversions. - * - * Let \c U be \c remove_reference::type. If \c is_array::value is - * true, the member typedef type shall equal remove_extent::type*. If - * \c is_function::value is true, the member typedef shall equal - * \c add_pointer::type. Otherwise the member typedef type equals \c U. - * - * @tparam _TypeT The type to transform. - */ template struct decay { typedef _TYPENAME _RW::__rw_decay<_TypeT>::type type; }; - -/** - * @ingroup meta_trans_other - * - * If _Enable is true, the member typedef \c type shall equal _TypeT; - * otherwise, there shall be no member typedef \c type. - * - * @tparam _Enable Flag used to select the primary template or the - * specialization. - * @tparam _TypeT The type of the member typedef if _Enable is true. - */ + template struct enable_if { @@ -1299,18 +469,7 @@ struct enable_if { }; - -/** - * @ingroup meta_trans_other - * - * If _Select is true, the member typedef \c type shall equal _TypeT - * otherwise \c type shall equal _TypeU. - * - * @tparam _Select Flag used to select the primary template or the - * specialization. - * @tparam _TypeT The type of the member typedef if _Select is true. - * @tparam _TypeU The type of the member typedef if _Select is false. - */ + template struct conditional {