unused_type.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. /*=============================================================================
  2. Copyright (c) 2019 Nikita Kniazev
  3. Use, modification and distribution is subject to the Boost Software
  4. License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  5. http://www.boost.org/LICENSE_1_0.txt)
  6. =============================================================================*/
  7. #include <boost/spirit/home/x3/support/unused.hpp>
  8. #include <type_traits>
  9. void test_use(boost::spirit::x3::unused_type) {}
  10. int main()
  11. {
  12. using boost::spirit::x3::unused;
  13. using boost::spirit::x3::unused_type;
  14. static_assert(std::is_trivial<unused_type>::value, "");
  15. unused_type unused_mut;
  16. static_assert(std::is_same<decltype((unused)), unused_type const&>::value, "");
  17. static_assert(std::is_same<decltype((unused_mut)), unused_type&>::value, "");
  18. static_assert(std::is_same<decltype(unused = 123), unused_type const&>::value, "");
  19. static_assert(std::is_same<decltype(unused = unused), unused_type const&>::value, "");
  20. static_assert(std::is_same<decltype(unused = unused_mut), unused_type const&>::value, "");
  21. static_assert(std::is_same<decltype(unused_mut = 123), unused_type&>::value, "");
  22. static_assert(std::is_same<decltype(unused_mut = unused), unused_type&>::value, "");
  23. static_assert(std::is_same<decltype(unused_mut = unused_mut), unused_type&>::value, "");
  24. test_use(0);
  25. test_use(unused);
  26. test_use(unused_mut);
  27. }