• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright Louis Dionne 2013-2017
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
4 
5 #include <boost/hana/core/to.hpp>
6 #include <boost/hana/equal.hpp>
7 
8 #include <climits>
9 namespace hana = boost::hana;
10 
11 
12 // This test makes sure that fundamental types are properly embedded in
13 // each other, when sensible.
14 
15 static_assert(hana::is_embedded<double, long double>{}, "");
16 static_assert(hana::is_embedded<float, long double>{}, "");
17 static_assert(hana::is_embedded<float, double>{}, "");
18 
19 static_assert(hana::is_embedded<signed long,  signed long long>{}, "");
20 static_assert(hana::is_embedded<signed int,   signed long long>{}, "");
21 static_assert(hana::is_embedded<signed short, signed long long>{}, "");
22 static_assert(hana::is_embedded<signed char,  signed long long>{}, "");
23 static_assert(hana::is_embedded<signed int,   signed long>{}, "");
24 static_assert(hana::is_embedded<signed short, signed long>{}, "");
25 static_assert(hana::is_embedded<signed char,  signed long>{}, "");
26 static_assert(hana::is_embedded<signed short, signed int>{}, "");
27 static_assert(hana::is_embedded<signed char,  signed int>{}, "");
28 static_assert(hana::is_embedded<signed char,  signed short>{}, "");
29 
30 static_assert(hana::is_embedded<unsigned long,  unsigned long long>{}, "");
31 static_assert(hana::is_embedded<unsigned int,   unsigned long long>{}, "");
32 static_assert(hana::is_embedded<unsigned short, unsigned long long>{}, "");
33 static_assert(hana::is_embedded<unsigned char,  unsigned long long>{}, "");
34 static_assert(hana::is_embedded<unsigned int,   unsigned long>{}, "");
35 static_assert(hana::is_embedded<unsigned short, unsigned long>{}, "");
36 static_assert(hana::is_embedded<unsigned char,  unsigned long>{}, "");
37 static_assert(hana::is_embedded<unsigned short, unsigned int>{}, "");
38 static_assert(hana::is_embedded<unsigned char,  unsigned int>{}, "");
39 static_assert(hana::is_embedded<unsigned char,  unsigned short>{}, "");
40 
41 #if CHAR_MIN < 0 // char is signed
42 
43     static_assert(hana::is_embedded<char, signed long long>{}, "");
44     static_assert(hana::is_embedded<char, signed long>{}, "");
45     static_assert(hana::is_embedded<char, signed int>{}, "");
46     static_assert(hana::is_embedded<char, signed short>{}, "");
47 
48     static_assert(hana::equal('a', static_cast<signed int>('a')), "");
49 
50 #else // char is unsigned
51 
52     static_assert(hana::is_embedded<char, unsigned long long>{}, "");
53     static_assert(hana::is_embedded<char, unsigned long>{}, "");
54     static_assert(hana::is_embedded<char, unsigned int>{}, "");
55     static_assert(hana::is_embedded<char, unsigned short>{}, "");
56 
57     static_assert(hana::equal('a', static_cast<unsigned int>('a')), "");
58 
59 #endif
60 
61 
main()62 int main() { }
63