special.equal.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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/not.hpp>
  7. #include <boost/hana/tuple.hpp>
  8. namespace hana = boost::hana;
  9. struct x0;
  10. struct x1;
  11. struct x2;
  12. int main() {
  13. // tuple_t
  14. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  15. hana::tuple_t<>,
  16. hana::tuple_t<>
  17. ));
  18. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  19. hana::tuple_t<x0>,
  20. hana::tuple_t<>)
  21. ));
  22. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  23. hana::tuple_t<>,
  24. hana::tuple_t<x0>)
  25. ));
  26. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  27. hana::tuple_t<x0>,
  28. hana::tuple_t<x0>
  29. ));
  30. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  31. hana::tuple_t<x0, x1>,
  32. hana::tuple_t<x0>)
  33. ));
  34. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  35. hana::tuple_t<x0>,
  36. hana::tuple_t<x0, x1>)
  37. ));
  38. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  39. hana::tuple_t<x0, x1>,
  40. hana::tuple_t<x0, x1>
  41. ));
  42. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  43. hana::tuple_t<x0, x1, x2>,
  44. hana::tuple_t<x0, x1, x2>
  45. ));
  46. // tuple_c
  47. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  48. hana::tuple_c<int>,
  49. hana::tuple_c<int>
  50. ));
  51. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  52. hana::tuple_c<int, 0>,
  53. hana::tuple_c<int>
  54. )));
  55. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  56. hana::tuple_c<int, 0>,
  57. hana::tuple_c<int, 0>
  58. ));
  59. BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
  60. hana::tuple_c<int, 0, 1>,
  61. hana::tuple_c<int, 0>
  62. )));
  63. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  64. hana::tuple_c<int, 0, 1>,
  65. hana::tuple_c<int, 0, 1>
  66. ));
  67. BOOST_HANA_CONSTANT_CHECK(hana::equal(
  68. hana::tuple_c<int, 0, 1, 2>,
  69. hana::tuple_c<int, 0, 1, 2>
  70. ));
  71. }