#pragma once #include #include "generic_predicate.h" namespace cppmp { /* tags */ struct tag_getter { }; struct tag_getter_member_var { }; struct tag_getter_member_func { }; struct tag_getter_lambda { }; struct tag_getter_chain { }; namespace __impl { /* getter_builder */ template struct getter_builder; } /** * @brief Evaluates to true_t if the passed type is an getter, to false_t otherwise. */ template struct is_getter; #ifdef cppmp_supports_variable_templates /** * @brief Is true if the passed type is an getter, false otherwise. */ template constexpr decltype(auto) is_getter_v = is_getter::value; #endif /** * @brief Predicate to create new getter objects. */ constexpr decltype(auto) make_getter = generic_predicate<__impl::getter_builder> { }; } #include "getter.inl"