type_traits_fwd.h

Go to the documentation of this file.
00001 // TR1 type_traits -*- C++ -*-
00002 
00003 // Copyright (C) 2004, 2005, 2006 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
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 tr1/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 _GLIBCXX_BEGIN_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 modifications [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 _GLIBCXX_END_NAMESPACE
00224 }
00225 
00226 #endif

Generated on Thu Nov 1 13:12:47 2007 for libstdc++ by  doxygen 1.5.1