class_of.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include <tuple>
  2. #include <utility>
  3. #include <type_traits>
  4. #include <boost/callable_traits/class_of.hpp>
  5. #include "test.hpp"
  6. struct foo;
  7. int main() {
  8. {
  9. using f = void(foo::*)();
  10. using test = TRAIT(class_of, f);
  11. using expect = foo;
  12. CT_ASSERT(std::is_same<test, expect>::value);
  13. }
  14. {
  15. using f = void(foo::*)() const;
  16. using test = TRAIT(class_of, f);
  17. using expect = foo;
  18. CT_ASSERT(std::is_same<test, expect>::value);
  19. }
  20. {
  21. using f = void(foo::*)() volatile;
  22. using test = TRAIT(class_of, f);
  23. using expect = foo;
  24. CT_ASSERT(std::is_same<test, expect>::value);
  25. }
  26. {
  27. using f = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int, ...) const volatile;
  28. using test = TRAIT(class_of, f);
  29. using expect = foo;
  30. CT_ASSERT(std::is_same<test, expect>::value);
  31. }
  32. {
  33. using f = int foo::*;
  34. using test = TRAIT(class_of, f);
  35. using expect = foo;
  36. CT_ASSERT(std::is_same<test, expect>::value);
  37. }
  38. {
  39. using f = const int foo::*;
  40. using test = TRAIT(class_of, f);
  41. using expect = foo;
  42. CT_ASSERT(std::is_same<test, expect>::value);
  43. }
  44. }