# type_traits_fwd.h

Go to the documentation of this file.

    00001 // TR1 type_traits -*- C++ -*-
    00002
    00003 // Copyright (C) 2004 Free Software Foundation, Inc.
    00004 //
    00005 // This file is part of the GNU ISO C++ Library.  This library is free
    00006 // software; you can redistribute it and/or modify it under the
    00007 // terms of the GNU General Public License as published by the
    00008 // Free Software Foundation; either version 2, or (at your option)
    00009 // any later version.
    00010
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00014 // GNU General Public License for more details.
    00015
    00016 // You should have received a copy of the GNU General Public License along
    00017 // with this library; see the file COPYING.  If not, write to the Free
    00018 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
    00019 // USA.
    00020
    00021 // As a special exception, you may use this file as part of a free software
    00022 // library without restriction.  Specifically, if other files instantiate
    00023 // templates or use macros or inline functions from this file, or you compile
    00024 // this file and link it with other files to produce an executable, this
    00025 // file does not by itself cause the resulting executable to be covered by
    00026 // the GNU General Public License.  This exception does not however
    00027 // invalidate any other reasons why the executable file might be covered by
    00028 // the GNU General Public License.
    00029
    00030 /** @file type_traits_fwd.h
    00031  *  This is an internal header file, included by other library headers.
    00032  *  You should not attempt to use it directly.
    00033  */
    00034
    00035 #ifndef _TYPE_TRAITS_FWD_H
    00036 #define _TYPE_TRAITS_FWD_H 1
    00037
    00038 #include <cstddef>
    00039
    00040 // namespace std::tr1
    00041 namespace std
    00042 {
    00043 namespace tr1
    00044 {
    00045   /// @brief  helper classes [4.3].
    00046   template<typename _Tp, _Tp __v>
    00047     struct integral_constant;
    00048   typedef integral_constant<bool, true>     true_type;
    00049   typedef integral_constant<bool, false>    false_type;
    00050
    00051   /// @brief  primary type categories [4.5.1].
    00052   template<typename _Tp>
    00053     struct is_void;
    00054
    00055   template<typename _Tp>
    00056     struct is_integral;
    00057
    00058   template<typename _Tp>
    00059     struct is_floating_point;
    00060
    00061   template<typename _Tp>
    00062     struct is_array;
    00063
    00064   template<typename _Tp>
    00065     struct is_pointer;
    00066
    00067   template<typename _Tp>
    00068     struct is_reference;
    00069
    00070   template<typename _Tp>
    00071     struct is_member_object_pointer;
    00072
    00073   template<typename _Tp>
    00074     struct is_member_function_pointer;
    00075
    00076   template<typename _Tp>
    00077     struct is_enum;
    00078
    00079   template<typename _Tp>
    00080     struct is_union;
    00081
    00082   template<typename _Tp>
    00083     struct is_class;
    00084
    00085   template<typename _Tp>
    00086     struct is_function;
    00087
    00088   /// @brief  composite type traits [4.5.2].
    00089   template<typename _Tp>
    00090     struct is_arithmetic;
    00091
    00092   template<typename _Tp>
    00093     struct is_fundamental;
    00094
    00095   template<typename _Tp>
    00096     struct is_object;
    00097
    00098   template<typename _Tp>
    00099     struct is_scalar;
    00100
    00101   template<typename _Tp>
    00102     struct is_compound;
    00103
    00104   template<typename _Tp>
    00105     struct is_member_pointer;
    00106
    00107   // Extension.
    00108   template<typename _Tp>
    00109     struct __is_union_or_class;
    00110
    00111   /// @brief  type properties [4.5.3].
    00112   template<typename _Tp>
    00113     struct is_const;
    00114
    00115   template<typename _Tp>
    00116     struct is_volatile;
    00117
    00118   template<typename _Tp>
    00119     struct is_pod;
    00120
    00121   template<typename _Tp>
    00122     struct is_empty;
    00123
    00124   template<typename _Tp>
    00125     struct is_polymorphic;
    00126
    00127   template<typename _Tp>
    00128     struct is_abstract;
    00129
    00130   template<typename _Tp>
    00131     struct has_trivial_constructor;
    00132
    00133   template<typename _Tp>
    00134     struct has_trivial_copy;
    00135
    00136   template<typename _Tp>
    00137     struct has_trivial_assign;
    00138
    00139   template<typename _Tp>
    00140     struct has_trivial_destructor;
    00141
    00142   template<typename _Tp>
    00143     struct has_nothrow_constructor;
    00144
    00145   template<typename _Tp>
    00146     struct has_nothrow_copy;
    00147
    00148   template<typename _Tp>
    00149     struct has_nothrow_assign;
    00150
    00151   template<typename _Tp>
    00152     struct has_virtual_destructor;
    00153
    00154   template<typename _Tp>
    00155     struct is_signed;
    00156
    00157   template<typename _Tp>
    00158     struct is_unsigned;
    00159
    00160   template<typename _Tp>
    00161     struct alignment_of;
    00162
    00163   template<typename _Tp>
    00164     struct rank;
    00165
    00166   template<typename _Tp, unsigned _Uint = 0>
    00167     struct extent;
    00168
    00169   /// @brief  relationships between types [4.6].
    00170   template<typename _Tp, typename _Up>
    00171     struct is_same;
    00172
    00173   template<typename _From, typename _To>
    00174     struct is_convertible;
    00175
    00176   template<typename _Base, typename _Derived>
    00177     struct is_base_of;
    00178
    00179   /// @brief  const-volatile modifications [4.7.1].
    00180   template<typename _Tp>
    00181     struct remove_const;
    00182
    00183   template<typename _Tp>
    00184     struct remove_volatile;
    00185
    00186   template<typename _Tp>
    00187     struct remove_cv;
    00188
    00189   template<typename _Tp>
    00190     struct add_const;
    00191
    00192   template<typename _Tp>
    00193     struct add_volatile;
    00194
    00195   template<typename _Tp>
    00196     struct add_cv;
    00197
    00198   /// @brief  reference modifications [4.7.2].
    00199   template<typename _Tp>
    00200     struct remove_reference;
    00201
    00202   template<typename _Tp>
    00203     struct add_reference;
    00204
    00205   /// @brief  array modififications [4.7.3].
    00206   template<typename _Tp>
    00207     struct remove_extent;
    00208
    00209   template<typename _Tp>
    00210     struct remove_all_extents;
    00211
    00212   /// @brief  pointer modifications [4.7.4].
    00213   template<typename _Tp>
    00214     struct remove_pointer;
    00215
    00216   template<typename _Tp>
    00217     struct add_pointer;
    00218
    00219   /// @brief  other transformations [4.8].
    00220   template<std::size_t _Len, std::size_t _Align>
    00221     struct aligned_storage;
    00222 }
    00223 }
    00224
    00225 #endif