#ifndef TYPEASVALUE_SRC_UTILITY_PREDICATE_H_ #define TYPEASVALUE_SRC_UTILITY_PREDICATE_H_ #include "conditional/if.h" #include "operation/logic.h" #include "function/apply.h" namespace tav { namespace utility { template < template class Predicate, typename Surrogate > struct predicate_assurance { template using assure = If< Eval>, Value, Surrogate >; }; template < template class Predicate, template class Charge, typename Surrogate > struct predicate_guard { template using check = Eval>, Apply, Surrogate >>; }; template class Predicate> struct predicate_negator { template using function = Not>; }; } } #endif // TYPEASVALUE_SRC_UTILITY_PREDICATE_H_