1// Copyright Louis Dionne 2013-2022
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>
9namespace hana = boost::hana;
10
11
12// This test makes sure that fundamental types are properly embedded in
13// each other, when sensible.
14
15static_assert(hana::is_embedded<double, long double>{}, "");
16static_assert(hana::is_embedded<float, long double>{}, "");
17static_assert(hana::is_embedded<float, double>{}, "");
18
19static_assert(hana::is_embedded<signed long, signed long long>{}, "");
20static_assert(hana::is_embedded<signed int, signed long long>{}, "");
21static_assert(hana::is_embedded<signed short, signed long long>{}, "");
22static_assert(hana::is_embedded<signed char, signed long long>{}, "");
23static_assert(hana::is_embedded<signed int, signed long>{}, "");
24static_assert(hana::is_embedded<signed short, signed long>{}, "");
25static_assert(hana::is_embedded<signed char, signed long>{}, "");
26static_assert(hana::is_embedded<signed short, signed int>{}, "");
27static_assert(hana::is_embedded<signed char, signed int>{}, "");
28static_assert(hana::is_embedded<signed char, signed short>{}, "");
29
30static_assert(hana::is_embedded<unsigned long, unsigned long long>{}, "");
31static_assert(hana::is_embedded<unsigned int, unsigned long long>{}, "");
32static_assert(hana::is_embedded<unsigned short, unsigned long long>{}, "");
33static_assert(hana::is_embedded<unsigned char, unsigned long long>{}, "");
34static_assert(hana::is_embedded<unsigned int, unsigned long>{}, "");
35static_assert(hana::is_embedded<unsigned short, unsigned long>{}, "");
36static_assert(hana::is_embedded<unsigned char, unsigned long>{}, "");
37static_assert(hana::is_embedded<unsigned short, unsigned int>{}, "");
38static_assert(hana::is_embedded<unsigned char, unsigned int>{}, "");
39static_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
62int main() { }
63

source code of boost/libs/hana/test/core/is_embedded.cpp