udl.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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/assert.hpp>
  5. #include <boost/hana/equal.hpp>
  6. #include <boost/hana/integral_constant.hpp>
  7. #include <boost/hana/less.hpp>
  8. #include <boost/hana/negate.hpp>
  9. #include <type_traits>
  10. namespace hana = boost::hana;
  11. using namespace hana::literals;
  12. BOOST_HANA_CONSTANT_CHECK(0_c == hana::llong_c<0>);
  13. BOOST_HANA_CONSTANT_CHECK(1_c == hana::llong_c<1>);
  14. BOOST_HANA_CONSTANT_CHECK(12_c == hana::llong_c<12>);
  15. BOOST_HANA_CONSTANT_CHECK(123_c == hana::llong_c<123>);
  16. BOOST_HANA_CONSTANT_CHECK(1234567_c == hana::llong_c<1234567>);
  17. BOOST_HANA_CONSTANT_CHECK(-34_c == hana::llong_c<-34>);
  18. static_assert(std::is_same<
  19. decltype(-1234_c)::value_type,
  20. long long
  21. >{}, "");
  22. static_assert(-1234_c == -1234ll, "");
  23. BOOST_HANA_CONSTANT_CHECK(-12_c < 0_c);
  24. constexpr auto deadbeef = hana::llong_c<0xDEADBEEF>;
  25. //hexadecimal
  26. BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xDEADBEEF_c);
  27. BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xDeAdBeEf_c);
  28. BOOST_HANA_CONSTANT_CHECK(deadbeef == 0xdeadbeef_c);
  29. //decimal
  30. BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<3735928559>); // test the test
  31. BOOST_HANA_CONSTANT_CHECK(deadbeef == 3735928559_c);
  32. //binary
  33. BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<0b11011110101011011011111011101111>); // test the test
  34. BOOST_HANA_CONSTANT_CHECK(deadbeef == 0b11011110101011011011111011101111_c);
  35. //octal
  36. BOOST_HANA_CONSTANT_CHECK(deadbeef == hana::llong_c<033653337357>); // test the test
  37. BOOST_HANA_CONSTANT_CHECK(deadbeef == 033653337357_c);
  38. BOOST_HANA_CONSTANT_CHECK(0x0_c == hana::llong_c<0>);
  39. BOOST_HANA_CONSTANT_CHECK(0b0_c == hana::llong_c<0>);
  40. BOOST_HANA_CONSTANT_CHECK(00_c == hana::llong_c<0>);
  41. BOOST_HANA_CONSTANT_CHECK(0x1_c == hana::llong_c<1>);
  42. BOOST_HANA_CONSTANT_CHECK(0b1_c == hana::llong_c<1>);
  43. BOOST_HANA_CONSTANT_CHECK(01_c == hana::llong_c<1>);
  44. BOOST_HANA_CONSTANT_CHECK(-0x1_c == hana::llong_c<-1>);
  45. BOOST_HANA_CONSTANT_CHECK(-0b1_c == hana::llong_c<-1>);
  46. BOOST_HANA_CONSTANT_CHECK(-01_c == hana::llong_c<-1>);
  47. BOOST_HANA_CONSTANT_CHECK(0x10_c == hana::llong_c<16>);
  48. BOOST_HANA_CONSTANT_CHECK(0b10_c == hana::llong_c<2>);
  49. BOOST_HANA_CONSTANT_CHECK(010_c == hana::llong_c<8>);
  50. BOOST_HANA_CONSTANT_CHECK(-0x10_c == hana::llong_c<-16>);
  51. BOOST_HANA_CONSTANT_CHECK(-0b10_c == hana::llong_c<-2>);
  52. BOOST_HANA_CONSTANT_CHECK(-010_c == hana::llong_c<-8>);
  53. // digit separators
  54. static_assert(123'456 == 123456, ""); // test the test
  55. BOOST_HANA_CONSTANT_CHECK(123'456_c == hana::llong_c<123456>);
  56. int main() { }