remove_const_test.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // (C) Copyright John Maddock 2000.
  2. // Use, modification and distribution are subject to the
  3. // Boost Software License, Version 1.0. (See accompanying file
  4. // LICENSE_1_0.txt or copy at http://www.tt.org/LICENSE_1_0.txt)
  5. #ifdef TEST_STD
  6. # include <type_traits>
  7. #else
  8. # include <boost/type_traits/remove_const.hpp>
  9. #endif
  10. #include "test.hpp"
  11. #include "check_type.hpp"
  12. BOOST_DECL_TRANSFORM_TEST3(remove_const_test_1, ::tt::remove_const, const)
  13. BOOST_DECL_TRANSFORM_TEST(remove_const_test_2, ::tt::remove_const, volatile, volatile)
  14. BOOST_DECL_TRANSFORM_TEST(remove_const_test_3, ::tt::remove_const, const volatile, volatile)
  15. BOOST_DECL_TRANSFORM_TEST0(remove_const_test_4, ::tt::remove_const)
  16. BOOST_DECL_TRANSFORM_TEST(remove_const_test_6, ::tt::remove_const, *const, *)
  17. BOOST_DECL_TRANSFORM_TEST(remove_const_test_7, ::tt::remove_const, *volatile, *volatile)
  18. BOOST_DECL_TRANSFORM_TEST(remove_const_test_8, ::tt::remove_const, *const volatile, *volatile)
  19. BOOST_DECL_TRANSFORM_TEST(remove_const_test_9, ::tt::remove_const, *, *)
  20. BOOST_DECL_TRANSFORM_TEST(remove_const_test_11, ::tt::remove_const, volatile*, volatile*)
  21. BOOST_DECL_TRANSFORM_TEST(remove_const_test_12, ::tt::remove_const, const[2], [2])
  22. BOOST_DECL_TRANSFORM_TEST(remove_const_test_13, ::tt::remove_const, volatile[2], volatile[2])
  23. BOOST_DECL_TRANSFORM_TEST(remove_const_test_14, ::tt::remove_const, const volatile[2], volatile[2])
  24. BOOST_DECL_TRANSFORM_TEST(remove_const_test_15, ::tt::remove_const, [2], [2])
  25. BOOST_DECL_TRANSFORM_TEST(remove_const_test_16, ::tt::remove_const, const*, const*)
  26. BOOST_DECL_TRANSFORM_TEST(remove_const_test_17, ::tt::remove_const, const*const, const*)
  27. BOOST_DECL_TRANSFORM_TEST(remove_const_test_18, ::tt::remove_const, (*), (*))
  28. BOOST_DECL_TRANSFORM_TEST(remove_const_test_19, ::tt::remove_const, (*const), (*))
  29. struct S
  30. {
  31. template<typename T>
  32. typename ::tt::remove_const<T>::type *operator=(T const &) const { return 0; }
  33. };
  34. void bar() {}
  35. void bug_case_7317()
  36. {
  37. S s;
  38. s = bar;
  39. (void)s;
  40. }
  41. TT_TEST_BEGIN(remove_const)
  42. BOOST_CHECK_TYPE(int, int);
  43. remove_const_test_1();
  44. remove_const_test_2();
  45. remove_const_test_3();
  46. remove_const_test_4();
  47. remove_const_test_6();
  48. remove_const_test_7();
  49. remove_const_test_8();
  50. remove_const_test_9();
  51. remove_const_test_11();
  52. remove_const_test_12();
  53. remove_const_test_13();
  54. remove_const_test_14();
  55. remove_const_test_15();
  56. remove_const_test_16();
  57. remove_const_test_17();
  58. remove_const_test_18();
  59. remove_const_test_19();
  60. TT_TEST_END