]> git.lyx.org Git - lyx.git/blob - boost/boost/type_traits/fwd.hpp
update from boost cvs
[lyx.git] / boost / boost / type_traits / fwd.hpp
1 //  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
2 //  Permission to copy, use, modify, sell and
3 //  distribute this software is granted provided this copyright notice appears
4 //  in all copies. This software is provided "as is" without express or implied
5 //  warranty, and with no claim as to its suitability for any purpose.
6 //
7 //  See http://www.boost.org for most recent version including documentation.
8 //
9 //  forward declarations of type_traits classes
10 //
11 #ifndef BOOST_FWD_TYPE_TRAITS_HPP
12 #define BOOST_FWD_TYPE_TRAITS_HPP
13
14 #include <cstdlib>
15 #include <cstddef>
16
17 #ifndef BOOST_CONFIG_HPP
18 #include <boost/config.hpp>
19 #endif
20
21 //
22 // Helper macros for builtin compiler support.
23 // If your compiler has builtin support for any of the following
24 // traits concepts, then redefine the appropriate macros to pick
25 // up on the compiler support:
26 //
27 // (these should largely ignore cv-qualifiers)
28 // BOOST_IS_CLASS(T) should evaluate to true if T is a class or struct type
29 // BOOST_IS_ENUM(T) should evaluate to true if T is an enumerator type
30 // BOOST_IS_UNION(T) should evaluate to true if T is a union type
31 // BOOST_IS_POD(T) should evaluate to true if T is a POD type
32 // BOOST_IS_EMPTY(T) should evaluate to true if T is an empty struct or union
33 // BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
34 // BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
35 // BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
36 // BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
37
38 #define BOOST_IS_CLASS(T) false
39 #define BOOST_IS_ENUM(T) false
40 #define BOOST_IS_UNION(T) false
41 #define BOOST_IS_POD(T) false
42 #define BOOST_IS_EMPTY(T) false
43 #define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
44 #define BOOST_HAS_TRIVIAL_COPY(T) false
45 #define BOOST_HAS_TRIVIAL_ASSIGN(T) false
46 #define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
47
48
49 namespace boost{
50 //
51 // forward declare all type traits templates here
52 //
53 // conversion_traits.hpp:
54 template <class From, class To>
55 struct is_convertible;
56 // alignment_traits.hpp:
57 template <class T>
58 struct alignment_of;
59 // arithmetic_traits.hpp:
60 template <class T>
61 struct is_void;
62 template <class T>
63 struct is_integral;
64 template <class T>
65 struct is_float;
66 template <class T>
67 struct is_arithmetic;
68 template <class T>
69 struct is_fundamental;
70
71 // cv_traits.hpp:
72 template <class T>
73 struct is_const;
74 template <class T>
75 struct is_volatile;
76 template <class T>
77 struct remove_const;
78 template <class T>
79 struct remove_volatile;
80 template <class T>
81 struct remove_cv;
82
83 // composite_traits.hpp:
84 template <class T>
85 struct is_array;
86 template <class T>
87 struct is_pointer;
88 template <class T>
89 struct is_reference;
90 template <class T>
91 struct is_member_pointer;
92 template <class T>
93 struct is_enum;
94 template <class T>
95 struct is_union;
96
97 // object_traits.hpp:
98 template <class T>
99 struct is_object;
100 template <class T>
101 struct is_scalar;
102 template <class T>
103 struct is_class;
104 template <class T>
105 struct is_compound;
106 template <class T>
107 struct is_POD;
108 template <class T>
109 struct has_trivial_constructor;
110 template <class T>
111 struct has_trivial_copy;
112 template <class T>
113 struct has_trivial_assign;
114 template <class T>
115 struct has_trivial_destructor;
116 template <class T>
117 struct is_empty;
118
119 // transform_traits.hpp:
120 template <class T>
121 struct remove_reference;
122 template <class T>
123 struct add_reference;
124 template <class T>
125 struct remove_bounds;
126 template <class T>
127 struct remove_pointer;
128 template <class T>
129 struct add_pointer;
130
131 // same_traits.hpp:
132 template <class T, class U>
133 struct is_same;
134
135 } // namespace boost
136
137 #endif // BOOST_FWD_TYPE_TRAITS_HPP
138
139
140
141