preprocessor.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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/detail/preprocessor.hpp>
  6. #include <string>
  7. #include <vector>
  8. //////////////////////////////////////////////////////////////////////////////
  9. // BOOST_HANA_PP_CONCAT
  10. //////////////////////////////////////////////////////////////////////////////
  11. static_assert(BOOST_HANA_PP_CONCAT(1, 2) == 12, "");
  12. //////////////////////////////////////////////////////////////////////////////
  13. // BOOST_HANA_PP_FRONT
  14. //////////////////////////////////////////////////////////////////////////////
  15. static_assert(BOOST_HANA_PP_FRONT(0) == 0, "");
  16. static_assert(BOOST_HANA_PP_FRONT(0, 1) == 0, "");
  17. static_assert(BOOST_HANA_PP_FRONT(0, 1, 2) == 0, "");
  18. static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3) == 0, "");
  19. static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
  20. 10, 11, 12, 13, 14, 15, 16, 16, 18) == 0, "");
  21. static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
  22. 10, 11, 12, 13, 14, 15, 16, 16, 18, 19) == 0, "");
  23. int main() {
  24. using Vector = std::vector<int>;
  25. //////////////////////////////////////////////////////////////////////////
  26. // BOOST_HANA_PP_STRINGIZE
  27. //////////////////////////////////////////////////////////////////////////
  28. {
  29. constexpr char const* xyz = BOOST_HANA_PP_STRINGIZE(xyz);
  30. BOOST_HANA_RUNTIME_CHECK(std::string{xyz} == "xyz");
  31. }{
  32. constexpr char const* xyz = BOOST_HANA_PP_STRINGIZE(foo{bar, baz});
  33. BOOST_HANA_RUNTIME_CHECK(std::string{xyz} == "foo{bar, baz}");
  34. }{
  35. constexpr char const* xyz = BOOST_HANA_PP_STRINGIZE(foo, bar, baz);
  36. BOOST_HANA_RUNTIME_CHECK(std::string{xyz} == "foo, bar, baz");
  37. }
  38. //////////////////////////////////////////////////////////////////////////
  39. // BOOST_HANA_PP_DROP_FRONT
  40. //////////////////////////////////////////////////////////////////////////
  41. {
  42. Vector args = {BOOST_HANA_PP_DROP_FRONT(0, 1)};
  43. BOOST_HANA_RUNTIME_CHECK(args == Vector{1});
  44. }{
  45. Vector args = {BOOST_HANA_PP_DROP_FRONT(0, 1, 2)};
  46. BOOST_HANA_RUNTIME_CHECK(args == Vector{1, 2});
  47. }{
  48. Vector args = {BOOST_HANA_PP_DROP_FRONT(0, 1, 2, 3)};
  49. BOOST_HANA_RUNTIME_CHECK(args == Vector{1, 2, 3});
  50. }{
  51. Vector args = {BOOST_HANA_PP_DROP_FRONT(0, 1, 2, 3, 4)};
  52. BOOST_HANA_RUNTIME_CHECK(args == Vector{1, 2, 3, 4});
  53. }
  54. }