]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/type_traits/test/is_abstract_test.cpp
2 // (C) Copyright Rani Sharoni,Robert Ramey, Pavel Vozenilek and Christoph Ludwig 2004.
3 // Use, modification and distribution are subject to the
4 // Boost Software License, Version 1.0. (See accompanying file
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 # include <type_traits>
11 # include <boost/type_traits/is_abstract.hpp>
14 #include "check_integral_constant.hpp"
17 #pragma warning(disable: 4505)
22 struct TestB
{ virtual void foo(void) = 0; };
23 struct TestC
{ private: virtual void foo(void) = 0; };
24 struct TestD
: public TestA
{};
25 struct TestE
: public TestB
{};
26 struct TestF
: public TestC
{};
27 struct TestG
: public TestB
{ virtual void foo(void) {} };
28 struct TestH
: public TestC
{ private: virtual void foo(void) {} };
29 struct TestI
: public TestB
, public TestC
{};
30 struct TestJ
: public TestI
{ virtual void foo(void) {} };
31 struct TestK
: public TestB
{ virtual void foo(void); virtual void foo2(void) = 0; };
32 struct TestL
: public TestK
{ virtual void foo2(void) {} };
33 struct TestM
: public virtual TestB
{};
34 struct TestN
: public virtual TestC
{};
35 struct TestO
: public TestM
, public TestN
{};
36 struct TestP
: public TestO
{ virtual void foo(void) {} };
37 struct TestQ
: public TestB
{ virtual void foo(void) = 0; };
38 struct TestR
: public TestC
{ private: virtual void foo(void) = 0; };
39 struct TestS
{ virtual void foo(void) {} };
40 struct TestT
{ virtual ~TestT(void) {} virtual void foo(void) {} };
41 struct TestU
: public TestT
{ virtual void foo(void) = 0; };
42 struct TestV
: public TestT
{ virtual void foo(void) {} };
43 struct TestW
{ virtual void foo1(void) = 0; virtual void foo2(void) = 0; };
44 struct TestX
: public TestW
{ virtual void foo1(void) {} virtual void foo2(void) {} };
45 struct TestY
{ virtual ~TestY(void) = 0; };
46 struct TestZ
{ virtual ~TestZ(void) = 0; }; TestZ::~TestZ(void) {}
47 struct TestAA
: public TestZ
{ virtual ~TestAA(void) = 0; }; TestAA::~TestAA(void) {}
48 struct TestAB
: public TestAA
{ virtual ~TestAB(void) {} };
49 struct TestAC
{ virtual void foo(void) = 0; }; void TestAC::foo(void) {}
50 struct TestAD
: public TestAC
{};
51 struct TestAE
: public TestAD
{ virtual void foo() {} };
52 struct TestAF
: public TestAD
{ virtual void foo(); }; void TestAF::foo(void) {}
53 struct TestAG
: public virtual TestA
{};
55 // template test types:
56 template <class T
> struct TTestA
{};
57 template <class T
> struct TTestB
{ virtual void foo(void) = 0; };
58 template <class T
> struct TTestC
{ private: virtual void foo(void) = 0; };
59 template <class T
> struct TTestD
: public TTestA
<T
> {};
60 template <class T
> struct TTestE
: public TTestB
<T
> {};
61 template <class T
> struct TTestF
: public TTestC
<T
> {};
62 template <class T
> struct TTestG
: public TTestB
<T
> { virtual void foo(void) {} };
63 template <class T
> struct TTestH
: public TTestC
<T
> { private: virtual void foo(void) {} };
64 template <class T
> struct TTestI
: public TTestB
<T
>, public TTestC
<T
> {};
65 template <class T
> struct TTestJ
: public TTestI
<T
> { virtual void foo(void) {} };
66 template <class T
> struct TTestK
: public TTestB
<T
> { virtual void foo(void); virtual void foo2(void) = 0; };
67 template <class T
> struct TTestL
: public TTestK
<T
> { virtual void foo2(void) {} };
68 template <class T
> struct TTestM
: public virtual TTestB
<T
> {};
69 template <class T
> struct TTestN
: public virtual TTestC
<T
> {};
70 template <class T
> struct TTestO
: public TTestM
<T
>, public TTestN
<T
> {};
71 template <class T
> struct TTestP
: public TTestO
<T
> { virtual void foo(void) {} };
72 template <class T
> struct TTestQ
: public TTestB
<T
> { virtual void foo(void) = 0; };
73 template <class T
> struct TTestR
: public TTestC
<T
> { private: virtual void foo(void) = 0; };
74 template <class T
> struct TTestS
{ virtual void foo(void) {} };
75 template <class T
> struct TTestT
{ virtual ~TTestT(void) {} virtual void foo(void) {} };
76 template <class T
> struct TTestU
: public TTestT
<T
> { virtual void foo(void) = 0; };
77 template <class T
> struct TTestV
: public TTestT
<T
> { virtual void foo(void) {} };
78 template <class T
> struct TTestW
{ virtual void foo1(void) = 0; virtual void foo2(void) = 0; };
79 template <class T
> struct TTestX
: public TTestW
<T
> { virtual void foo1(void) {} virtual void foo2(void) {} };
80 template <class T
> struct TTestY
{ virtual ~TTestY(void) = 0; };
81 template <class T
> struct TTestZ
{ virtual ~TTestZ(void) = 0; }; template <class T
> TTestZ
<T
>::~TTestZ(void) {}
82 template <class T
> struct TTestAA
: public TTestZ
<T
> { virtual ~TTestAA(void) = 0; }; template <class T
> TTestAA
<T
>::~TTestAA(void) {}
83 template <class T
> struct TTestAB
: public TTestAA
<T
> { virtual ~TTestAB(void) {} };
84 template <class T
> struct TTestAC
{ virtual void foo(void) = 0; }; template <class T
> void TTestAC
<T
>::foo(void) {}
85 template <class T
> struct TTestAD
: public TTestAC
<T
> {};
86 template <class T
> struct TTestAE
: public TTestAD
<T
> { virtual void foo() {} };
87 template <class T
> struct TTestAF
: public TTestAD
<T
> { virtual void foo(); }; template <class T
> void TTestAF
<T
>::foo(void) {}
88 template <class T
> struct TTestAG
: public virtual TTestA
<T
> {};
91 TT_TEST_BEGIN(is_abstract
)
93 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestA
>::value
), false);
94 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestB
>::value
), true);
95 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestC
>::value
), true);
96 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestD
>::value
), false);
97 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestE
>::value
), true);
98 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestF
>::value
), true);
99 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestG
>::value
), false);
100 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestH
>::value
), false);
101 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestI
>::value
), true);
102 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestJ
>::value
), false); // only one method implemented!
103 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestK
>::value
), true);
104 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestL
>::value
), false);
105 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestM
>::value
), true);
106 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestN
>::value
), true);
107 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestO
>::value
), true);
108 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestP
>::value
), false); // ???
109 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestQ
>::value
), true);
110 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestR
>::value
), true);
111 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestS
>::value
), false);
112 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestT
>::value
), false);
113 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestU
>::value
), true);
114 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestV
>::value
), false);
115 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestW
>::value
), true);
116 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestX
>::value
), false);
117 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestY
>::value
), true);
118 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestZ
>::value
), true);
119 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAA
>::value
), true);
120 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAB
>::value
), false);
121 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAC
>::value
), true);
122 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAD
>::value
), true);
123 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAE
>::value
), false);
124 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAF
>::value
), false);
125 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAG
>::value
), false);
127 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestA
>::value
), false);
128 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestB
>::value
), true);
129 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestC
>::value
), true);
130 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestD
>::value
), false);
131 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestE
>::value
), true);
132 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestF
>::value
), true);
133 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestG
>::value
), false);
134 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestH
>::value
), false);
135 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestI
>::value
), true);
136 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestJ
>::value
), false); // only one method implemented!
137 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestK
>::value
), true);
138 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestL
>::value
), false);
139 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestM
>::value
), true);
140 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestN
>::value
), true);
141 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestO
>::value
), true);
142 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestP
>::value
), false); // ???
143 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestQ
>::value
), true);
144 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestR
>::value
), true);
145 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestS
>::value
), false);
146 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestT
>::value
), false);
147 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestU
>::value
), true);
148 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestV
>::value
), false);
149 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestW
>::value
), true);
150 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestX
>::value
), false);
151 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestY
>::value
), true);
152 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestZ
>::value
), true);
153 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAA
>::value
), true);
154 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAB
>::value
), false);
155 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAC
>::value
), true);
156 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAD
>::value
), true);
157 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAE
>::value
), false);
158 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAF
>::value
), false);
159 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TestAG
>::value
), false);
161 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestA
>::value
), false);
162 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestB
>::value
), true);
163 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestC
>::value
), true);
164 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestD
>::value
), false);
165 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestE
>::value
), true);
166 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestF
>::value
), true);
167 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestG
>::value
), false);
168 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestH
>::value
), false);
169 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestI
>::value
), true);
170 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestJ
>::value
), false); // only one method implemented!
171 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestK
>::value
), true);
172 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestL
>::value
), false);
173 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestM
>::value
), true);
174 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestN
>::value
), true);
175 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestO
>::value
), true);
176 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestP
>::value
), false); // ???
177 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestQ
>::value
), true);
178 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestR
>::value
), true);
179 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestS
>::value
), false);
180 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestT
>::value
), false);
181 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestU
>::value
), true);
182 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestV
>::value
), false);
183 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestW
>::value
), true);
184 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestX
>::value
), false);
185 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestY
>::value
), true);
186 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestZ
>::value
), true);
187 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAA
>::value
), true);
188 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAB
>::value
), false);
189 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAC
>::value
), true);
190 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAD
>::value
), true);
191 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAE
>::value
), false);
192 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAF
>::value
), false);
193 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TestAG
>::value
), false);
195 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestA
>::value
), false);
196 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestB
>::value
), true);
197 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestC
>::value
), true);
198 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestD
>::value
), false);
199 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestE
>::value
), true);
200 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestF
>::value
), true);
201 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestG
>::value
), false);
202 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestH
>::value
), false);
203 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestI
>::value
), true);
204 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestJ
>::value
), false); // only one method implemented!
205 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestK
>::value
), true);
206 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestL
>::value
), false);
207 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestM
>::value
), true);
208 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestN
>::value
), true);
209 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestO
>::value
), true);
210 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestP
>::value
), false); // ???
211 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestQ
>::value
), true);
212 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestR
>::value
), true);
213 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestS
>::value
), false);
214 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestT
>::value
), false);
215 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestU
>::value
), true);
216 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestV
>::value
), false);
217 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestW
>::value
), true);
218 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestX
>::value
), false);
219 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestY
>::value
), true);
220 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestZ
>::value
), true);
221 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAA
>::value
), true);
222 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAB
>::value
), false);
223 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAC
>::value
), true);
224 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAD
>::value
), true);
225 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAE
>::value
), false);
226 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAF
>::value
), false);
227 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TestAG
>::value
), false);
229 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
230 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestA
&&>::value
), false);
232 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestA
&>::value
), false);
233 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestB
&>::value
), false);
234 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestC
&>::value
), false);
235 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestD
&>::value
), false);
236 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestE
&>::value
), false);
237 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestF
&>::value
), false);
238 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestG
&>::value
), false);
239 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestH
&>::value
), false);
240 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestI
&>::value
), false);
241 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestJ
&>::value
), false); // only one method implemented!
242 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestK
&>::value
), false);
243 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestL
&>::value
), false);
244 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestM
&>::value
), false);
245 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestN
&>::value
), false);
246 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestO
&>::value
), false);
247 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestP
&>::value
), false); // ???
248 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestQ
&>::value
), false);
249 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestR
&>::value
), false);
250 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestS
&>::value
), false);
251 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestT
&>::value
), false);
252 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestU
&>::value
), false);
253 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestV
&>::value
), false);
254 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestW
&>::value
), false);
255 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestX
&>::value
), false);
256 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestY
&>::value
), false);
257 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestZ
&>::value
), false);
258 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAA
&>::value
), false);
259 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAB
&>::value
), false);
260 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAC
&>::value
), false);
261 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAD
&>::value
), false);
262 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAE
&>::value
), false);
263 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAF
&>::value
), false);
264 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TestAG
&>::value
), false);
265 #if !(defined(BOOST_MSVC) && (BOOST_MSVC < 1310))
266 // MSVC prior to VC7.1 always runs out of swap space trying to
267 // compile these, so leave them out for now (the test fails anyway).
268 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestA
<int> >::value
), false);
269 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestB
<int> >::value
), true);
270 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestC
<int> >::value
), true);
271 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestD
<int> >::value
), false);
272 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestE
<int> >::value
), true);
273 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestF
<int> >::value
), true);
274 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestG
<int> >::value
), false);
275 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestH
<int> >::value
), false);
276 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestI
<int> >::value
), true);
277 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestJ
<int> >::value
), false); // only one method implemented!
278 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestK
<int> >::value
), true);
279 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestL
<int> >::value
), false);
280 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestM
<int> >::value
), true);
281 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestN
<int> >::value
), true);
282 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestO
<int> >::value
), true);
283 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestP
<int> >::value
), false); // ???
284 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestQ
<int> >::value
), true);
285 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestR
<int> >::value
), true);
286 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestS
<int> >::value
), false);
287 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestT
<int> >::value
), false);
288 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestU
<int> >::value
), true);
289 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestV
<int> >::value
), false);
290 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestW
<int> >::value
), true);
291 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestX
<int> >::value
), false);
292 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestY
<int> >::value
), true);
293 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestZ
<int> >::value
), true);
294 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAA
<int> >::value
), true);
295 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAB
<int> >::value
), false);
296 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAC
<int> >::value
), true);
297 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAD
<int> >::value
), true);
298 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAE
<int> >::value
), false);
299 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAF
<int> >::value
), false);
300 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAG
<int> >::value
), false);
302 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestA
<int> >::value
), false);
303 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestB
<int> >::value
), true);
304 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestC
<int> >::value
), true);
305 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestD
<int> >::value
), false);
306 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestE
<int> >::value
), true);
307 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestF
<int> >::value
), true);
308 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestG
<int> >::value
), false);
309 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestH
<int> >::value
), false);
310 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestI
<int> >::value
), true);
311 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestJ
<int> >::value
), false); // only one method implemented!
312 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestK
<int> >::value
), true);
313 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestL
<int> >::value
), false);
314 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestM
<int> >::value
), true);
315 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestN
<int> >::value
), true);
316 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestO
<int> >::value
), true);
317 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestP
<int> >::value
), false); // ???
318 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestQ
<int> >::value
), true);
319 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestR
<int> >::value
), true);
320 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestS
<int> >::value
), false);
321 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestT
<int> >::value
), false);
322 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestU
<int> >::value
), true);
323 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestV
<int> >::value
), false);
324 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestW
<int> >::value
), true);
325 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestX
<int> >::value
), false);
326 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestY
<int> >::value
), true);
327 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestZ
<int> >::value
), true);
328 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAA
<int> >::value
), true);
329 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAB
<int> >::value
), false);
330 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAC
<int> >::value
), true);
331 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAD
<int> >::value
), true);
332 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAE
<int> >::value
), false);
333 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAF
<int> >::value
), false);
334 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<const TTestAG
<int> >::value
), false);
336 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestA
<int> >::value
), false);
337 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestB
<int> >::value
), true);
338 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestC
<int> >::value
), true);
339 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestD
<int> >::value
), false);
340 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestE
<int> >::value
), true);
341 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestF
<int> >::value
), true);
342 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestG
<int> >::value
), false);
343 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestH
<int> >::value
), false);
344 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestI
<int> >::value
), true);
345 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestJ
<int> >::value
), false); // only one method implemented!
346 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestK
<int> >::value
), true);
347 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestL
<int> >::value
), false);
348 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestM
<int> >::value
), true);
349 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestN
<int> >::value
), true);
350 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestO
<int> >::value
), true);
351 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestP
<int> >::value
), false); // ???
352 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestQ
<int> >::value
), true);
353 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestR
<int> >::value
), true);
354 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestS
<int> >::value
), false);
355 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestT
<int> >::value
), false);
356 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestU
<int> >::value
), true);
357 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestV
<int> >::value
), false);
358 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestW
<int> >::value
), true);
359 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestX
<int> >::value
), false);
360 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestY
<int> >::value
), true);
361 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestZ
<int> >::value
), true);
362 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAA
<int> >::value
), true);
363 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAB
<int> >::value
), false);
364 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAC
<int> >::value
), true);
365 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAD
<int> >::value
), true);
366 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAE
<int> >::value
), false);
367 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAF
<int> >::value
), false);
368 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile TTestAG
<int> >::value
), false);
370 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestA
<int> >::value
), false);
371 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestB
<int> >::value
), true);
372 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestC
<int> >::value
), true);
373 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestD
<int> >::value
), false);
374 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestE
<int> >::value
), true);
375 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestF
<int> >::value
), true);
376 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestG
<int> >::value
), false);
377 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestH
<int> >::value
), false);
378 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestI
<int> >::value
), true);
379 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestJ
<int> >::value
), false); // only one method implemented!
380 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestK
<int> >::value
), true);
381 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestL
<int> >::value
), false);
382 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestM
<int> >::value
), true);
383 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestN
<int> >::value
), true);
384 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestO
<int> >::value
), true);
385 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestP
<int> >::value
), false); // ???
386 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestQ
<int> >::value
), true);
387 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestR
<int> >::value
), true);
388 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestS
<int> >::value
), false);
389 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestT
<int> >::value
), false);
390 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestU
<int> >::value
), true);
391 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestV
<int> >::value
), false);
392 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestW
<int> >::value
), true);
393 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestX
<int> >::value
), false);
394 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestY
<int> >::value
), true);
395 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestZ
<int> >::value
), true);
396 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAA
<int> >::value
), true);
397 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAB
<int> >::value
), false);
398 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAC
<int> >::value
), true);
399 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAD
<int> >::value
), true);
400 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAE
<int> >::value
), false);
401 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAF
<int> >::value
), false);
402 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<volatile const TTestAG
<int> >::value
), false);
404 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestA
<int>& >::value
), false);
405 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestB
<int>& >::value
), false);
406 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestC
<int>& >::value
), false);
407 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestD
<int>& >::value
), false);
408 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestE
<int>& >::value
), false);
409 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestF
<int>& >::value
), false);
410 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestG
<int>& >::value
), false);
411 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestH
<int>& >::value
), false);
412 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestI
<int>& >::value
), false);
413 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestJ
<int>& >::value
), false); // only one method implemented!
414 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestK
<int>& >::value
), false);
415 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestL
<int>& >::value
), false);
416 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestM
<int>& >::value
), false);
417 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestN
<int>& >::value
), false);
418 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestO
<int>& >::value
), false);
419 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestP
<int>& >::value
), false); // ???
420 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestQ
<int>& >::value
), false);
421 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestR
<int>& >::value
), false);
422 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestS
<int>& >::value
), false);
423 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestT
<int>& >::value
), false);
424 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestU
<int>& >::value
), false);
425 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestV
<int>& >::value
), false);
426 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestW
<int>& >::value
), false);
427 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestX
<int>& >::value
), false);
428 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestY
<int>& >::value
), false);
429 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestZ
<int>& >::value
), false);
430 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAA
<int>& >::value
), false);
431 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAB
<int>& >::value
), false);
432 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAC
<int>& >::value
), false);
433 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAD
<int>& >::value
), false);
434 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAE
<int>& >::value
), false);
435 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAF
<int>& >::value
), false);
436 BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract
<TTestAG
<int>& >::value
), false);