#include <tick/traits/is_predicate.h>
A predicate is a function object that returns a boolean.
TICK_TRAIT(is_predicate) { template<class F, class... Ts> auto require(F&& f, Ts&&... xs) -> valid< decltype(returns<bool>(f(std::forward<Ts>(xs)...))) >; };