|
- #pragma once
-
- #include <cppmp/config.h>
-
- #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<typename X, typename = void>
- struct getter_builder;
-
- }
-
- /**
- * @brief Evaluates to true_t if the passed type is an getter, to false_t otherwise.
- */
- template<typename T>
- struct is_getter;
-
- #ifdef cppmp_supports_variable_templates
- /**
- * @brief Is true if the passed type is an getter, false otherwise.
- */
- template<typename T>
- constexpr decltype(auto) is_getter_v = is_getter<T>::value;
- #endif
-
- /**
- * @brief Predicate to create new getter objects.
- */
- constexpr decltype(auto) make_getter = generic_predicate<__impl::getter_builder> { };
-
- }
-
- #include "getter.inl"
|