remove_member_volatile.cpp 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. Copyright Barrett Adair 2016-2017
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
  5. */
  6. #include <type_traits>
  7. #include <functional>
  8. #include <tuple>
  9. #include <boost/callable_traits/remove_member_volatile.hpp>
  10. #include "test.hpp"
  11. struct foo{};
  12. int main() {
  13. {
  14. using f = char(foo::*)(foo*, int);
  15. using l = char(foo::*)(foo*, int) LREF;
  16. using r = char(foo::*)(foo*, int) RREF;
  17. using c = char(foo::*)(foo*, int) const;
  18. using cl = char(foo::*)(foo*, int) const LREF;
  19. using cr = char(foo::*)(foo*, int) const RREF;
  20. using v = char(foo::*)(foo*, int) volatile;
  21. using vl = char(foo::*)(foo*, int) volatile LREF;
  22. using vr = char(foo::*)(foo*, int) volatile RREF;
  23. using cv = char(foo::*)(foo*, int) const volatile;
  24. using cvl = char(foo::*)(foo*, int) const volatile LREF;
  25. using cvr = char(foo::*)(foo*, int) const volatile RREF;
  26. CT_ASSERT(std::is_same<f, TRAIT(remove_member_volatile, f)>{});
  27. CT_ASSERT(std::is_same<l, TRAIT(remove_member_volatile, vl)>{});
  28. CT_ASSERT(std::is_same<l, TRAIT(remove_member_volatile, l)>{});
  29. CT_ASSERT(std::is_same<f, TRAIT(remove_member_volatile, v)>{});
  30. CT_ASSERT(std::is_same<r, TRAIT(remove_member_volatile, r)>{});
  31. CT_ASSERT(std::is_same<r, TRAIT(remove_member_volatile, vr)>{});
  32. CT_ASSERT(std::is_same<c, TRAIT(remove_member_volatile, c)>{});
  33. CT_ASSERT(std::is_same<c, TRAIT(remove_member_volatile, cv)>{});
  34. CT_ASSERT(std::is_same<cl, TRAIT(remove_member_volatile, cl)>{});
  35. CT_ASSERT(std::is_same<cl, TRAIT(remove_member_volatile, cvl)>{});
  36. CT_ASSERT(std::is_same<cr, TRAIT(remove_member_volatile, cr)>{});
  37. CT_ASSERT(std::is_same<cr, TRAIT(remove_member_volatile, cvr)>{});
  38. }
  39. #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
  40. {
  41. using f = foo&&();
  42. using l = foo&&() LREF;
  43. using r = foo&&() RREF;
  44. using c = foo&&() const;
  45. using cl = foo&&() const LREF;
  46. using cr = foo&&() const RREF;
  47. using v = foo&&() volatile;
  48. using vl = foo&&() volatile LREF;
  49. using vr = foo&&() volatile RREF;
  50. using cv = foo&&() const volatile;
  51. using cvl = foo&&() const volatile LREF;
  52. using cvr = foo&&() const volatile RREF;
  53. CT_ASSERT(std::is_same<f, TRAIT(remove_member_volatile, f)>{});
  54. CT_ASSERT(std::is_same<f, TRAIT(remove_member_volatile, v)>{});
  55. CT_ASSERT(std::is_same<l, TRAIT(remove_member_volatile, vl)>{});
  56. CT_ASSERT(std::is_same<l, TRAIT(remove_member_volatile, l)>{});
  57. CT_ASSERT(std::is_same<r, TRAIT(remove_member_volatile, r)>{});
  58. CT_ASSERT(std::is_same<r, TRAIT(remove_member_volatile, vr)>{});
  59. CT_ASSERT(std::is_same<c, TRAIT(remove_member_volatile, c)>{});
  60. CT_ASSERT(std::is_same<c, TRAIT(remove_member_volatile, cv)>{});
  61. CT_ASSERT(std::is_same<cl, TRAIT(remove_member_volatile, cl)>{});
  62. CT_ASSERT(std::is_same<cl, TRAIT(remove_member_volatile, cvl)>{});
  63. CT_ASSERT(std::is_same<cr, TRAIT(remove_member_volatile, cr)>{});
  64. CT_ASSERT(std::is_same<cr, TRAIT(remove_member_volatile, cvr)>{});
  65. }
  66. #endif //#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
  67. }