is_embedded.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. #include <boost/hana/core/to.hpp>
  5. #include <boost/hana/equal.hpp>
  6. #include <climits>
  7. namespace hana = boost::hana;
  8. // This test makes sure that fundamental types are properly embedded in
  9. // each other, when sensible.
  10. static_assert(hana::is_embedded<double, long double>{}, "");
  11. static_assert(hana::is_embedded<float, long double>{}, "");
  12. static_assert(hana::is_embedded<float, double>{}, "");
  13. static_assert(hana::is_embedded<signed long, signed long long>{}, "");
  14. static_assert(hana::is_embedded<signed int, signed long long>{}, "");
  15. static_assert(hana::is_embedded<signed short, signed long long>{}, "");
  16. static_assert(hana::is_embedded<signed char, signed long long>{}, "");
  17. static_assert(hana::is_embedded<signed int, signed long>{}, "");
  18. static_assert(hana::is_embedded<signed short, signed long>{}, "");
  19. static_assert(hana::is_embedded<signed char, signed long>{}, "");
  20. static_assert(hana::is_embedded<signed short, signed int>{}, "");
  21. static_assert(hana::is_embedded<signed char, signed int>{}, "");
  22. static_assert(hana::is_embedded<signed char, signed short>{}, "");
  23. static_assert(hana::is_embedded<unsigned long, unsigned long long>{}, "");
  24. static_assert(hana::is_embedded<unsigned int, unsigned long long>{}, "");
  25. static_assert(hana::is_embedded<unsigned short, unsigned long long>{}, "");
  26. static_assert(hana::is_embedded<unsigned char, unsigned long long>{}, "");
  27. static_assert(hana::is_embedded<unsigned int, unsigned long>{}, "");
  28. static_assert(hana::is_embedded<unsigned short, unsigned long>{}, "");
  29. static_assert(hana::is_embedded<unsigned char, unsigned long>{}, "");
  30. static_assert(hana::is_embedded<unsigned short, unsigned int>{}, "");
  31. static_assert(hana::is_embedded<unsigned char, unsigned int>{}, "");
  32. static_assert(hana::is_embedded<unsigned char, unsigned short>{}, "");
  33. #if CHAR_MIN < 0 // char is signed
  34. static_assert(hana::is_embedded<char, signed long long>{}, "");
  35. static_assert(hana::is_embedded<char, signed long>{}, "");
  36. static_assert(hana::is_embedded<char, signed int>{}, "");
  37. static_assert(hana::is_embedded<char, signed short>{}, "");
  38. static_assert(hana::equal('a', static_cast<signed int>('a')), "");
  39. #else // char is unsigned
  40. static_assert(hana::is_embedded<char, unsigned long long>{}, "");
  41. static_assert(hana::is_embedded<char, unsigned long>{}, "");
  42. static_assert(hana::is_embedded<char, unsigned int>{}, "");
  43. static_assert(hana::is_embedded<char, unsigned short>{}, "");
  44. static_assert(hana::equal('a', static_cast<unsigned int>('a')), "");
  45. #endif
  46. int main() { }