Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. struct Test
  5. {
  6. int a;
  7. int b;
  8. };
  9.  
  10. template< typename Type >
  11. using a_member_variable_type = decltype(std::declval<Type>().a);
  12.  
  13. template< typename Type >
  14. using b_member_variable_type = decltype(std::declval<Type>().b);
  15.  
  16. template< typename Type >
  17. using ab_member_variables_has_the_same_type_policy = std::enable_if_t< std::is_same<a_member_variable_type<Type>, b_member_variable_type<Type> >::value>;
  18.  
  19. template< typename TestType, typename = void>
  20. struct AnotherTest
  21. {
  22. void f()
  23. {
  24. std::cout << "No" << std::endl;
  25. };
  26. };
  27.  
  28. template< typename TestType >
  29. struct AnotherTest< TestType, ab_member_variables_has_the_same_type_policy<TestType>>
  30. {
  31. void f()
  32. {
  33. std::cout << "Yes" << std::endl;
  34. };
  35. };
  36.  
  37. int main()
  38. {
  39. AnotherTest< Test > another_test;
  40.  
  41. another_test.f();
  42.  
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement