|
- #pragma once
-
- #include "generic_predicate.h"
-
- namespace cppmp
- {
-
- /* tags */
-
- struct tag_setter { };
- struct tag_setter_member_var { };
- struct tag_setter_member_func { };
- struct tag_setter_lambda { };
-
- namespace __impl
- {
-
- /* setter_builder */
-
- template<typename X, typename = void>
- struct setter_builder;
-
- }
-
- /**
- * @brief Evaluates to true_t if the passed type is an setter, to false_t otherwise.
- */
- template<typename T>
- struct is_setter;
-
- #ifdef cppmp_supports_variable_templates
- /**
- * @brief Is true if the passed type is an setter, false otherwise.
- */
- template<typename T>
- constexpr decltype(auto) is_setter_v = is_setter<T>::value;
- #endif
-
- /**
- * @brief Predicate to create new setter objects.
- */
- constexpr decltype(auto) make_setter = generic_predicate<__impl::setter_builder> { };
-
- }
-
- #include "setter.inl"
|