You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

48 rivejä
969 B

  1. #pragma once
  2. #include "generic_predicate.h"
  3. namespace cppmp
  4. {
  5. /* tags */
  6. struct tag_getter { };
  7. struct tag_getter_member_var { };
  8. struct tag_getter_member_func { };
  9. struct tag_getter_lambda { };
  10. struct tag_getter_chain { };
  11. namespace __impl
  12. {
  13. /* getter_builder */
  14. template<typename X, typename = void>
  15. struct getter_builder;
  16. }
  17. /**
  18. * @brief Evaluates to true_t if the passed type is an getter, to false_t otherwise.
  19. */
  20. template<typename T>
  21. struct is_getter;
  22. #ifdef cppmp_supports_variable_templates
  23. /**
  24. * @brief Is true if the passed type is an getter, false otherwise.
  25. */
  26. template<typename T>
  27. constexpr decltype(auto) is_getter_v = is_getter<T>::value;
  28. #endif
  29. /**
  30. * @brief Predicate to create new getter objects.
  31. */
  32. constexpr decltype(auto) make_getter = generic_predicate<__impl::getter_builder> { };
  33. }
  34. #include "getter.inl"