1818 */
1919#include " test.hpp"
2020
21-
2221// helpers
2322
2423typedef bool non_constant;
2524typedef const bool constant;
26- class base {};
25+ class not_default_constructible { not_default_constructible(int ) {} };
26+
2727class not_derived {};
28+ class base {};
2829class derived : base {};
29- // //class not_default_constructible { not_default_constructible(int) {}};
30+ class more_derived : derived {};
31+ class also_derived : base {};
32+ class more_also_derived : also_derived {};
3033
31- template <typename >
32- constexpr bool is_defined = true ;
34+ template <typename Type >
35+ constexpr bool is_defined = !std::is_void_v<Type> ;
3336
3437// sizes
3538
@@ -129,16 +132,16 @@ static_assert(is_defined<if_not_same<char, bool>>);
129132
130133static_assert (is_defined<if_one_byte<int8_t >>);
131134static_assert (is_defined<if_one_byte<uint8_t >>);
132- // // static_assert(is_defined<if_one_byte<char>>);
133- // // static_assert(is_defined<if_one_byte<bool>>);
135+ static_assert (is_defined<if_one_byte<char >>);
136+ static_assert (is_defined<if_one_byte<bool >>);
134137// //static_assert(!is_defined<if_one_byte<uint256_t>>);
135138// //static_assert(!is_defined<if_one_byte<float>>);
136139// //static_assert(!is_defined<if_one_byte<double>>);
137140// //static_assert(!is_defined<if_one_byte<int16_t>>);
138141// //static_assert(!is_defined<if_one_byte<uint32_t>>);
139142// //static_assert(!is_defined<if_one_byte<int64_t>>);
140143// //static_assert(!is_defined<if_one_byte<size_t>>);
141- // //static_assert(!is_defined<if_one_byte<base>>);
144+ // ////// static_assert(!is_defined<if_one_byte<base>>);
142145
143146static_assert (is_defined<if_not_one_byte<int16_t >>);
144147static_assert (is_defined<if_not_one_byte<uint32_t >>);
@@ -164,10 +167,10 @@ static_assert(is_defined<if_size_of<signed_size_t, sizeof(size_t)>>);
164167// //static_assert(!is_defined<if_size_of<int, sizeof(bool)>>);
165168
166169static_assert (is_defined<if_const<constant>>);
167- // //static_assert(!is_defined<if_const<is_non_constant >>);
170+ // //static_assert(!is_defined<if_const<non_constant >>);
168171
169172static_assert (is_defined<if_non_const<non_constant>>);
170- // //static_assert(!is_defined<if_non_const<is_constant >>);
173+ // //static_assert(!is_defined<if_non_const<constant >>);
171174
172175static_assert (is_defined<if_base_of<base, base>>);
173176static_assert (is_defined<if_base_of<base, derived>>);
@@ -183,6 +186,19 @@ static_assert(is_defined<if_not_base_of<float, double>>);
183186// //static_assert(!is_defined<if_not_base_of<base, base>>);
184187// //static_assert(!is_defined<if_not_base_of<base, derived>>);
185188
189+ static_assert (is_defined<if_common_type<base, base>>);
190+ static_assert (is_defined<if_common_type<base, derived>>);
191+ static_assert (is_defined<if_common_type<derived, derived>>);
192+ static_assert (is_defined<if_common_type<derived, base>>);
193+ static_assert (is_defined<if_common_type<derived, more_derived>>);
194+ static_assert (is_defined<if_common_type<more_derived, derived>>);
195+ static_assert (is_defined<if_common_type<also_derived, more_also_derived>>);
196+ static_assert (is_defined<if_common_type<more_also_derived, also_derived>>);
197+ // //static_assert(!is_defined<if_common_type<derived, also_derived>>);
198+ // //static_assert(!is_defined<if_common_type<also_derived, derived>>);
199+ // //static_assert(!is_defined<if_common_type<base, not_derived>>);
200+ // //static_assert(!is_defined<if_common_type<not_derived, base>>);
201+
186202static_assert (is_defined<if_same_size<bool , bool >>);
187203static_assert (is_defined<if_same_size<int , int >>);
188204static_assert (is_defined<if_same_size<int8_t , int8_t >>);
@@ -202,10 +218,6 @@ static_assert(is_defined<if_same_size<uint64_t, int64_t>>);
202218// //static_assert(!is_defined<if_same_size<int16_t, int32_t>>);
203219// //static_assert(!is_defined<if_same_size<int16_t, int64_t>>);
204220// //static_assert(!is_defined<if_same_size<int32_t, int64_t>>);
205- // //static_assert(is_defined<if_same_size<int, uint32_t>>);
206- // //static_assert(is_defined<if_same_size<int32_t, int>>);
207- // //static_assert(!is_defined<if_same_size<bool, int>>);
208- // //static_assert(!is_defined<if_same_size<int, bool>>);
209221
210222static_assert (is_defined<if_not_same_size<int8_t , int16_t >>);
211223static_assert (is_defined<if_not_same_size<int8_t , int32_t >>);
@@ -216,28 +228,23 @@ static_assert(is_defined<if_not_same_size<int8_t, int64_t>>);
216228static_assert (is_defined<if_not_same_size<int16_t , int32_t >>);
217229static_assert (is_defined<if_not_same_size<int16_t , int64_t >>);
218230static_assert (is_defined<if_not_same_size<int32_t , int64_t >>);
219- // //static_assert(is_defined<if_not_same_size<bool, bool>>);
220- // //static_assert(is_defined<if_not_same_size<int, int>>);
221- // //static_assert(is_defined<if_not_same_size<int8_t, int8_t>>);
222- // //static_assert(is_defined<if_not_same_size<uint8_t, uint8_t>>);
223- // //static_assert(is_defined<if_not_same_size<int16_t, uint16_t>>);
224- // //static_assert(is_defined<if_not_same_size<uint16_t, int16_t>>);
225- // //static_assert(is_defined<if_not_same_size<int32_t, uint32_t>>);
226- // //static_assert(is_defined<if_not_same_size<uint32_t, int32_t>>);
227- // //static_assert(is_defined<if_not_same_size<int64_t, uint64_t>>);
228- // //static_assert(is_defined<if_not_same_size<uint64_t, int64_t>>);
229- // //static_assert(is_defined<if_not_same_size<int, uint32_t>>);
230- // //static_assert(is_defined<if_not_same_size<int32_t, int>>);
231- // //static_assert(is_defined<if_not_same_size<bool, int>>);
232- // //static_assert(is_defined<if_not_same_size<int, bool>>);
231+
232+ // //static_assert(!is_defined<if_not_same_size<int8_t, int8_t>>);
233+ // //static_assert(!is_defined<if_not_same_size<uint8_t, uint8_t>>);
234+ // //static_assert(!is_defined<if_not_same_size<int16_t, uint16_t>>);
235+ // //static_assert(!is_defined<if_not_same_size<uint16_t, int16_t>>);
236+ // //static_assert(!is_defined<if_not_same_size<int32_t, uint32_t>>);
237+ // //static_assert(!is_defined<if_not_same_size<uint32_t, int32_t>>);
238+ // //static_assert(!is_defined<if_not_same_size<int64_t, uint64_t>>);
239+ // //static_assert(!is_defined<if_not_same_size<uint64_t, int64_t>>);
233240
234241static_assert (is_defined<if_lesser_size<int8_t , int16_t >>);
235242static_assert (is_defined<if_lesser_size<int8_t , int32_t >>);
236243static_assert (is_defined<if_lesser_size<int8_t , int64_t >>);
237244static_assert (is_defined<if_lesser_size<int16_t , int32_t >>);
238245static_assert (is_defined<if_lesser_size<int16_t , int64_t >>);
239246static_assert (is_defined<if_lesser_size<int32_t , int64_t >>);
240- // // static_assert(is_defined<if_lesser_size<bool, int>>);
247+ static_assert (is_defined<if_lesser_size<bool , int >>);
241248// //static_assert(!is_defined<if_lesser_size<bool, bool>>);
242249// //static_assert(!is_defined<if_lesser_size<int, int>>);
243250// //static_assert(!is_defined<if_lesser_size<int, uint32_t>>);
@@ -271,7 +278,7 @@ static_assert(is_defined<if_not_lesser_size<int32_t, uint32_t>>);
271278static_assert (is_defined<if_not_lesser_size<uint32_t , int32_t >>);
272279static_assert (is_defined<if_not_lesser_size<int64_t , uint64_t >>);
273280static_assert (is_defined<if_not_lesser_size<uint64_t , int64_t >>);
274- // // static_assert(is_defined<if_not_lesser_size<int, bool>>);
281+ static_assert (is_defined<if_not_lesser_size<int , bool >>);
275282// //static_assert(!is_defined<if_not_lesser_size<bool, int>>);
276283// //static_assert(!is_defined<if_not_lesser_size<int8_t, int16_t>>);
277284// //static_assert(!is_defined<if_not_lesser_size<int8_t, int32_t>>);
@@ -286,20 +293,16 @@ static_assert(is_defined<if_greater_size<int64_t, int8_t>>);
286293static_assert (is_defined<if_greater_size<int32_t , int16_t >>);
287294static_assert (is_defined<if_greater_size<int64_t , int16_t >>);
288295static_assert (is_defined<if_greater_size<int64_t , int32_t >>);
289- // //static_assert(is_defined<if_greater_size<bool, int>>);
290- // //static_assert(is_defined<if_greater_size<bool, bool>>);
291- // //static_assert(is_defined<if_greater_size<int, int>>);
292- // //static_assert(is_defined<if_greater_size<int, uint32_t>>);
293- // //static_assert(is_defined<if_greater_size<int32_t, int>>);
294- // //static_assert(is_defined<if_greater_size<int8_t, int8_t>>);
295- // //static_assert(is_defined<if_greater_size<uint8_t, uint8_t>>);
296- // //static_assert(is_defined<if_greater_size<int16_t, uint16_t>>);
297- // //static_assert(is_defined<if_greater_size<uint16_t, int16_t>>);
298- // //static_assert(is_defined<if_greater_size<int32_t, uint32_t>>);
299- // //static_assert(is_defined<if_greater_size<uint32_t, int32_t>>);
300- // //static_assert(is_defined<if_greater_size<int64_t, uint64_t>>);
301- // //static_assert(is_defined<if_greater_size<uint64_t, int64_t>>);
302- // //static_assert(is_defined<if_greater_size<int, bool>>);
296+ // //static_assert(!is_defined<if_greater_size<bool, bool>>);
297+ // //static_assert(!is_defined<if_greater_size<int, int>>);
298+ // //static_assert(!is_defined<if_greater_size<int8_t, int8_t>>);
299+ // //static_assert(!is_defined<if_greater_size<uint8_t, uint8_t>>);
300+ // //static_assert(!is_defined<if_greater_size<int16_t, uint16_t>>);
301+ // //static_assert(!is_defined<if_greater_size<uint16_t, int16_t>>);
302+ // //static_assert(!is_defined<if_greater_size<int32_t, uint32_t>>);
303+ // //static_assert(!is_defined<if_greater_size<uint32_t, int32_t>>);
304+ // //static_assert(!is_defined<if_greater_size<int64_t, uint64_t>>);
305+ // //static_assert(!is_defined<if_greater_size<uint64_t, int64_t>>);
303306
304307static_assert (is_defined<if_not_greater_size<bool , bool >>);
305308static_assert (is_defined<if_not_greater_size<uint8_t , bool >>);
@@ -320,8 +323,6 @@ static_assert(is_defined<if_not_greater_size<int32_t, uint32_t>>);
320323static_assert (is_defined<if_not_greater_size<uint32_t , int32_t >>);
321324static_assert (is_defined<if_not_greater_size<int64_t , uint64_t >>);
322325static_assert (is_defined<if_not_greater_size<uint64_t , int64_t >>);
323- // //static_assert(!is_defined<if_not_greater_size<bool, int>>);
324- // //static_assert(!is_defined<if_not_greater_size<int, bool>>);
325326// //static_assert(!is_defined<if_not_greater_size<int16_t, int8_t>>);
326327// //static_assert(!is_defined<if_not_greater_size<int32_t, int8_t>>);
327328// //static_assert(!is_defined<if_not_greater_size<int64_t, int8_t>>);
@@ -347,14 +348,14 @@ static_assert(is_defined<if_default_constructible<std_array<bool, 42>>>);
347348// //static_assert(!is_defined<if_default_constructible<not_default_constructible>>);
348349
349350static_assert (is_defined<if_trivially_constructible<uint32_t >>);
350- // // static_assert(is_defined<if_trivially_constructible<std_vector <uint8_t>>>);
351+ static_assert (is_defined<if_trivially_constructible<std::array <uint8_t , 42 >>>);
351352// //static_assert(!is_defined<if_trivially_constructible<std::string>>);
352- static_assert (is_defined<if_trivially_constructible<std_array <uint8_t , 42 >>>);
353+ // // static_assert(! is_defined<if_trivially_constructible<std::vector <uint8_t>>>);
353354// //static_assert(!is_defined<if_trivially_constructible<not_default_constructible>>);
354355
355356static_assert (is_defined<if_unique_object_representations<bool >>);
356357static_assert (is_defined<if_unique_object_representations<size_t >>);
357- // static_assert(!is_defined<if_unique_object_representations<std::string>>);
358+ // // static_assert(!is_defined<if_unique_object_representations<std::string>>);
358359// //static_assert(!is_defined<if_unique_object_representations<base>>);
359360// //static_assert(!is_defined<if_unique_object_representations<derived>>);
360361
@@ -389,7 +390,7 @@ static_assert(is_defined<if_signed_integer<int>>);
389390static_assert (is_defined<if_signed_integer<int16_t >>);
390391static_assert (is_defined<if_signed_integer<int32_t >>);
391392static_assert (is_defined<if_signed_integer<int64_t >>);
392- // //static_assert(is_defined<if_signed_integer<uintx>>);
393+ // //static_assert(! is_defined<if_signed_integer<uintx>>);
393394// //static_assert(!is_defined<if_signed_integer<bool>>);
394395// //static_assert(!is_defined<if_signed_integer<float>>);
395396// //static_assert(!is_defined<if_signed_integer<double>>);
@@ -441,15 +442,15 @@ static_assert(is_defined<if_same_signed_integer<unsigned char, uint8_t>>);
441442static_assert (is_defined<if_same_signed_integer<uint8_t , uint8_t >>);
442443static_assert (is_defined<if_same_signed_integer<uint32_t , uint32_t >>);
443444static_assert (is_defined<if_same_signed_integer<uint64_t , uint64_t >>);
444- // //static_assert(is_defined<if_same_signed_integer<bool, bool>>);
445+ // //static_assert(! is_defined<if_same_signed_integer<bool, bool>>);
445446// //static_assert(!is_defined<if_same_signed_integer<float, float>>);
446447// //static_assert(!is_defined<if_same_signed_integer<double, double>>);
447448// //static_assert(!is_defined<if_same_signed_integer<base, base>>);
448449
449450static_assert (is_defined<if_same_signed_integer<uint16_t , uint8_t >>);
450451static_assert (is_defined<if_same_signed_integer<uint8_t , unsigned char >>);
451452static_assert (is_defined<if_same_signed_integer<unsigned char , uint8_t >>);
452- // // static_assert(is_defined<if_same_signed_integer<int, char>>);
453+ static_assert (is_defined<if_same_signed_integer<int , char >>);
453454// //static_assert(!is_defined<if_same_signed_integer<int16_t, bool>>);
454455// //static_assert(!is_defined<if_same_signed_integer<uint16_t, bool>>);
455456// //static_assert(!is_defined<if_same_signed_integer<char, unsigned char>>);
@@ -491,8 +492,8 @@ static_assert(is_defined<if_uintx<uint512_t>>);
491492// //static_assert(!is_defined<if_uintx<base>>);
492493// //static_assert(!is_defined<if_uintx<std_array<uint8_t, 42>>>);
493494
494- // integral integer types
495- // bool is considered non-integral.
495+ // integral integer types
496+ // bool is considered non-integral.
496497
497498static_assert (is_defined<if_integral<char >>);
498499static_assert (is_defined<if_integral<int >>);
@@ -559,7 +560,7 @@ static_assert(is_defined<if_unsigned_integral_integer<uint8_t>>);
559560
560561static_assert (is_defined<if_same_signed_integral_integer<int , signed char >>);
561562static_assert (is_defined<if_same_signed_integral_integer<uint16_t , uint8_t >>);
562- // //static_assert(is_defined<if_same_signed_integral_integer<uintx, uint256_t>>);
563+ // //static_assert(! is_defined<if_same_signed_integral_integer<uintx, uint256_t>>);
563564// //static_assert(!is_defined<if_same_signed_integral_integer<uint16_t, bool>>);
564565// //static_assert(!is_defined<if_same_signed_integral_integer<size_t, bool>>);
565566// //static_assert(!is_defined<if_same_signed_integral_integer<bool, bool>>);
@@ -588,15 +589,15 @@ static_assert(is_defined<if_same_signed_integral_integer<unsigned char, uint8_t>
588589static_assert (is_defined<if_same_signed_integral_integer<uint8_t , uint8_t >>);
589590static_assert (is_defined<if_same_signed_integral_integer<uint32_t , uint32_t >>);
590591static_assert (is_defined<if_same_signed_integral_integer<uint64_t , uint64_t >>);
591- // //static_assert(is_defined<if_same_signed_integral_integer<bool, bool>>);
592+ // //static_assert(! is_defined<if_same_signed_integral_integer<bool, bool>>);
592593// //static_assert(!is_defined<if_same_signed_integral_integer<float, float>>);
593594// //static_assert(!is_defined<if_same_signed_integral_integer<double, double>>);
594595// //static_assert(!is_defined<if_same_signed_integral_integer<base, base>>);
595596
596597static_assert (is_defined<if_same_signed_integral_integer<uint16_t , uint8_t >>);
597598static_assert (is_defined<if_same_signed_integral_integer<uint8_t , unsigned char >>);
598599static_assert (is_defined<if_same_signed_integral_integer<unsigned char , uint8_t >>);
599- // // static_assert(is_defined<if_same_signed_integral_integer<int, char>>);
600+ static_assert (is_defined<if_same_signed_integral_integer<int , char >>);
600601// //static_assert(!is_defined<if_same_signed_integral_integer<int16_t, bool>>);
601602// //static_assert(!is_defined<if_same_signed_integral_integer<uint16_t, bool>>);
602603// //static_assert(!is_defined<if_same_signed_integral_integer<char, unsigned char>>);
@@ -606,7 +607,7 @@ static_assert(is_defined<if_not_same_signed_integral_integer<uint16_t, int>>);
606607static_assert (is_defined<if_not_same_signed_integral_integer<size_t , int >>);
607608static_assert (is_defined<if_not_same_signed_integral_integer<int , uint16_t >>);
608609static_assert (is_defined<if_not_same_signed_integral_integer<int , size_t >>);
609- // //static_assert(is_defined<if_not_same_signed_integral_integer<uintx, uint256_t>>);
610+ // //static_assert(! is_defined<if_not_same_signed_integral_integer<uintx, uint256_t>>);
610611// //static_assert(!is_defined<if_not_same_signed_integral_integer<int, char>>);
611612// //static_assert(!is_defined<if_not_same_signed_integral_integer<uint16_t, uint8_t>>);
612613// //static_assert(!is_defined<if_not_same_signed_integral_integer<bool, int>>);
@@ -619,8 +620,8 @@ static_assert(is_defined<if_not_same_signed_integral_integer<int, size_t>>);
619620// //static_assert(!is_defined<if_not_same_signed_integral_integer<int64_t, int>>);
620621// //static_assert(!is_defined<if_not_same_signed_integral_integer<base, int>>);
621622
622- // //static_assert(is_defined<if_big_endian_integral_integer<uint8_t>>);
623- // //static_assert(is_defined<if_little_endian_integral_integer<uint8_t>>);
623+ // //static_assert(is_little_endian || is_defined<if_big_endian_integral_integer<uint8_t>>);
624+ // //static_assert(is_big_endian || is_defined<if_little_endian_integral_integer<uint8_t>>);
624625
625626// //static_assert(!is_defined<if_floating_point<int>>);
626627// //static_assert(!is_defined<if_floating_point<bool>>);
@@ -647,7 +648,8 @@ static_assert(is_defined<if_integral_array<std_array<uint8_t, 0>>>);
647648static_assert (is_defined<if_byte_insertable<std::string>>);
648649static_assert (is_defined<if_byte_insertable<std::vector<uint8_t >>>);
649650static_assert (is_defined<if_byte_insertable<std_vector<uint8_t >>>);
650- // //static_assert(is_defined<if_byte_insertable<std_array<uint8_t, 42>>>);
651+ // //static_assert(!is_defined<if_byte_insertable<std_array<uint8_t, 42>>>);
652+ // //static_assert(!is_defined<if_byte_insertable<std::array<uint8_t, 42>>>);
651653// //static_assert(!is_defined<if_byte_insertable<std::u32string>>);
652654// //static_assert(!is_defined<if_byte_insertable<std_vector<uint32_t>>>);
653655// //static_assert(!is_defined<if_byte_insertable<uint32_t>>);
0 commit comments