type_traits_fwd.h: New, forward declarations.
2004-12-22 Paolo Carlini <pcarlini@suse.de> * include/tr1/type_traits_fwd.h: New, forward declarations. * include/tr1/type_traits: Clean-up. * include/Makefile.am: Add. * include/Makefile.in: Regenerate. From-SVN: r92493
This commit is contained in:
parent
dfb5c52315
commit
821c5063f9
|
@ -1,3 +1,10 @@
|
|||
2004-12-22 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/tr1/type_traits_fwd.h: New, forward declarations.
|
||||
* include/tr1/type_traits: Clean-up.
|
||||
* include/Makefile.am: Add.
|
||||
* include/Makefile.in: Regenerate.
|
||||
|
||||
2004-12-20 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* testsuite/27_io/basic_istream/peek/wchar_t/1.cc: New.
|
||||
|
|
|
@ -232,7 +232,8 @@ tr1_headers = \
|
|||
${tr1_srcdir}/functional \
|
||||
${tr1_srcdir}/tuple \
|
||||
${tr1_srcdir}/utility \
|
||||
${tr1_srcdir}/type_traits
|
||||
${tr1_srcdir}/type_traits \
|
||||
${tr1_srcdir}/type_traits_fwd.h
|
||||
|
||||
|
||||
# This is the common subset of files that all three "C" header models use.
|
||||
|
|
|
@ -449,7 +449,8 @@ tr1_headers = \
|
|||
${tr1_srcdir}/functional \
|
||||
${tr1_srcdir}/tuple \
|
||||
${tr1_srcdir}/utility \
|
||||
${tr1_srcdir}/type_traits
|
||||
${tr1_srcdir}/type_traits \
|
||||
${tr1_srcdir}/type_traits_fwd.h
|
||||
|
||||
|
||||
# This is the common subset of files that all three "C" header models use.
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#define _TYPE_TRAITS 1
|
||||
|
||||
#include <bits/c++config.h>
|
||||
#include <cstddef>
|
||||
#include <tr1/type_traits_fwd.h>
|
||||
|
||||
// namespace std::tr1
|
||||
namespace std
|
||||
|
@ -119,33 +119,16 @@ namespace tr1
|
|||
struct is_reference<_Tp&>
|
||||
: public true_type { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_object_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_function_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_enum;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_union;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_class;
|
||||
|
||||
template<typename _Tp>
|
||||
struct __is_function_helper
|
||||
: public __sfinae_types
|
||||
{
|
||||
private:
|
||||
template<typename>
|
||||
static __one
|
||||
__test(...);
|
||||
static __one __test(...);
|
||||
|
||||
template<typename _Up>
|
||||
static __two
|
||||
__test(_Up (*) [1]);
|
||||
static __two __test(_Up(*)[1]);
|
||||
|
||||
public:
|
||||
static const bool __value = sizeof(__test<_Tp>(0)) == 1;
|
||||
|
@ -178,13 +161,6 @@ namespace tr1
|
|||
|| is_void<_Tp>::value)>
|
||||
{ };
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_pointer
|
||||
: public integral_constant<bool,
|
||||
(is_member_object_pointer<_Tp>::value
|
||||
|| is_member_function_pointer<_Tp>::value)>
|
||||
{ };
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_scalar
|
||||
: public integral_constant<bool, (is_arithmetic<_Tp>::value
|
||||
|
@ -192,11 +168,18 @@ namespace tr1
|
|||
|| is_pointer<_Tp>::value
|
||||
|| is_member_pointer<_Tp>::value)>
|
||||
{ };
|
||||
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_compound
|
||||
: public integral_constant<bool, !is_fundamental<_Tp>::value> { };
|
||||
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_pointer
|
||||
: public integral_constant<bool,
|
||||
(is_member_object_pointer<_Tp>::value
|
||||
|| is_member_function_pointer<_Tp>::value)>
|
||||
{ };
|
||||
|
||||
/// @brief type properties [4.5.3].
|
||||
template<typename>
|
||||
struct is_const
|
||||
|
@ -214,52 +197,10 @@ namespace tr1
|
|||
struct is_volatile<_Tp volatile>
|
||||
: public true_type { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_pod;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_empty;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_polymorphic;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_abstract;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_constructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_copy;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_assign;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_destructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_constructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_copy;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_assign;
|
||||
|
||||
template<typename _Tp>
|
||||
template<typename>
|
||||
struct has_virtual_destructor
|
||||
: public false_type { };
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_signed;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_unsigned;
|
||||
|
||||
template<typename _Tp>
|
||||
struct alignment_of;
|
||||
|
||||
template<typename>
|
||||
struct rank
|
||||
: public integral_constant<std::size_t, 0> { };
|
||||
|
@ -272,7 +213,7 @@ namespace tr1
|
|||
struct rank<_Tp[]>
|
||||
: public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
|
||||
|
||||
template<typename, unsigned = 0>
|
||||
template<typename, unsigned>
|
||||
struct extent
|
||||
: public integral_constant<std::size_t, 0> { };
|
||||
|
||||
|
@ -299,12 +240,6 @@ namespace tr1
|
|||
struct is_same<_Tp, _Tp>
|
||||
: public true_type { };
|
||||
|
||||
template<typename _From, typename _To>
|
||||
struct is_convertible;
|
||||
|
||||
template<typename _Base, typename _Derived>
|
||||
struct is_base_of;
|
||||
|
||||
/// @brief const-volatile modifications [4.7.1].
|
||||
template<typename _Tp>
|
||||
struct remove_const
|
||||
|
@ -403,8 +338,6 @@ namespace tr1
|
|||
{ typedef typename remove_reference<_Tp>::type* type; };
|
||||
|
||||
/// @brief other transformations [4.8].
|
||||
template<std::size_t _Len, std::size_t _Align>
|
||||
struct aligned_storage;
|
||||
|
||||
#undef _DEFINE_SPEC_HELPER
|
||||
#undef _DEFINE_SPEC
|
||||
|
|
|
@ -0,0 +1,212 @@
|
|||
// TR1 type_traits -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
/** @file type_traits_fwd.h
|
||||
* This is an internal header file, included by other library headers.
|
||||
* You should not attempt to use it directly.
|
||||
*/
|
||||
|
||||
#ifndef _TYPE_TRAITS_FWD_H
|
||||
#define _TYPE_TRAITS_FWD_H 1
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
// namespace std::tr1
|
||||
namespace std
|
||||
{
|
||||
namespace tr1
|
||||
{
|
||||
/// @brief helper classes [4.3].
|
||||
template<typename _Tp, _Tp __v>
|
||||
struct integral_constant;
|
||||
typedef integral_constant<bool, true> true_type;
|
||||
typedef integral_constant<bool, false> false_type;
|
||||
|
||||
/// @brief primary type categories [4.5.1].
|
||||
template<typename _Tp>
|
||||
struct is_void;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_integral;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_floating_point;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_array;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_reference;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_object_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_function_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_enum;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_union;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_class;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_function;
|
||||
|
||||
/// @brief composite type traits [4.5.2].
|
||||
template<typename _Tp>
|
||||
struct is_arithmetic;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_fundamental;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_object;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_scalar;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_compound;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_member_pointer;
|
||||
|
||||
/// @brief type properties [4.5.3].
|
||||
template<typename _Tp>
|
||||
struct is_const;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_volatile;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_pod;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_empty;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_polymorphic;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_abstract;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_constructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_copy;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_assign;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_trivial_destructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_constructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_copy;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_nothrow_assign;
|
||||
|
||||
template<typename _Tp>
|
||||
struct has_virtual_destructor;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_signed;
|
||||
|
||||
template<typename _Tp>
|
||||
struct is_unsigned;
|
||||
|
||||
template<typename _Tp>
|
||||
struct alignment_of;
|
||||
|
||||
template<typename _Tp>
|
||||
struct rank;
|
||||
|
||||
template<typename _Tp, unsigned _Uint = 0>
|
||||
struct extent;
|
||||
|
||||
/// @brief relationships between types [4.6].
|
||||
template<typename _Tp, typename _Up>
|
||||
struct is_same;
|
||||
|
||||
template<typename _From, typename _To>
|
||||
struct is_convertible;
|
||||
|
||||
template<typename _Base, typename _Derived>
|
||||
struct is_base_of;
|
||||
|
||||
/// @brief const-volatile modifications [4.7.1].
|
||||
template<typename _Tp>
|
||||
struct remove_const;
|
||||
|
||||
template<typename _Tp>
|
||||
struct remove_volatile;
|
||||
|
||||
template<typename _Tp>
|
||||
struct remove_cv;
|
||||
|
||||
template<typename _Tp>
|
||||
struct add_const;
|
||||
|
||||
template<typename _Tp>
|
||||
struct add_volatile;
|
||||
|
||||
template<typename _Tp>
|
||||
struct add_cv;
|
||||
|
||||
/// @brief reference modifications [4.7.2].
|
||||
template<typename _Tp>
|
||||
struct remove_reference;
|
||||
|
||||
template<typename _Tp>
|
||||
struct add_reference;
|
||||
|
||||
/// @brief array modififications [4.7.3].
|
||||
template<typename _Tp>
|
||||
struct remove_extent;
|
||||
|
||||
template<typename _Tp>
|
||||
struct remove_all_extents;
|
||||
|
||||
/// @brief pointer modifications [4.7.4].
|
||||
template<typename _Tp>
|
||||
struct remove_pointer;
|
||||
|
||||
template<typename _Tp>
|
||||
struct add_pointer;
|
||||
|
||||
/// @brief other transformations [4.8].
|
||||
template<std::size_t _Len, std::size_t _Align>
|
||||
struct aligned_storage;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue