1 // TR1 type_traitsfwd.h -*- C++ -*-
3 // Copyright (C) 2007 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21 // As a special exception, you may use this file as part of a free software
22 // library without restriction. Specifically, if other files instantiate
23 // templates or use macros or inline functions from this file, or you compile
24 // this file and link it with other files to produce an executable, this
25 // file does not by itself cause the resulting executable to be covered by
26 // the GNU General Public License. This exception does not however
27 // invalidate any other reasons why the executable file might be covered by
28 // the GNU General Public License.
30 /** @file tr1_impl/type_traitsfwd.h
31 * This is an internal header file, included by other library headers.
32 * You should not attempt to use it directly.
37 _GLIBCXX_BEGIN_NAMESPACE_TR1
39 /// @brief helper classes [4.3].
40 template<typename _Tp
, _Tp __v
>
41 struct integral_constant
;
42 typedef integral_constant
<bool, true> true_type
;
43 typedef integral_constant
<bool, false> false_type
;
45 /// @brief primary type categories [4.5.1].
46 template<typename _Tp
>
49 template<typename _Tp
>
52 template<typename _Tp
>
53 struct is_floating_point
;
55 template<typename _Tp
>
58 template<typename _Tp
>
61 template<typename _Tp
>
64 template<typename _Tp
>
65 struct is_member_object_pointer
;
67 template<typename _Tp
>
68 struct is_member_function_pointer
;
70 template<typename _Tp
>
73 template<typename _Tp
>
76 template<typename _Tp
>
79 template<typename _Tp
>
82 /// @brief composite type traits [4.5.2].
83 template<typename _Tp
>
86 template<typename _Tp
>
87 struct is_fundamental
;
89 template<typename _Tp
>
92 template<typename _Tp
>
95 template<typename _Tp
>
98 template<typename _Tp
>
99 struct is_member_pointer
;
101 /// @brief type properties [4.5.3].
102 template<typename _Tp
>
105 template<typename _Tp
>
108 template<typename _Tp
>
111 template<typename _Tp
>
112 struct is_polymorphic
;
114 template<typename _Tp
>
117 template<typename _Tp
>
118 struct has_virtual_destructor
;
120 template<typename _Tp
>
123 template<typename _Tp
>
126 template<typename _Tp
, unsigned _Uint
= 0>
129 /// @brief relationships between types [4.6].
130 template<typename _Tp
, typename _Up
>
133 /// @brief const-volatile modifications [4.7.1].
134 template<typename _Tp
>
137 template<typename _Tp
>
138 struct remove_volatile
;
140 template<typename _Tp
>
143 template<typename _Tp
>
146 template<typename _Tp
>
149 template<typename _Tp
>
152 /// @brief reference modifications [4.7.2].
153 template<typename _Tp
>
154 struct remove_reference
;
156 template<typename _Tp
>
157 struct add_reference
;
159 /// @brief array modifications [4.7.3].
160 template<typename _Tp
>
161 struct remove_extent
;
163 template<typename _Tp
>
164 struct remove_all_extents
;
166 /// @brief pointer modifications [4.7.4].
167 template<typename _Tp
>
168 struct remove_pointer
;
170 template<typename _Tp
>
173 /// @brief other transformations [4.8].
174 template<std::size_t _Len
, std::size_t _Align
>
175 struct aligned_storage
;
177 _GLIBCXX_END_NAMESPACE_TR1