Здравствуйте, andyp, Вы писали:
R>>Ну а тип параметра предиката вытаскиваем уже из типов входных списков.
A>Как раз была идея не вытаскивать, а чтобы он автоматически вывелся.
А, мы уже от практических потребностей к этюдам перешли?

Ну хорошо:
http://coliru.stacked-crooked.com/a/d57523b3e99490f8
struct AnyType
{
template <typename T>
operator T() const;
};
template <typename T, typename = bool>
struct is_predicate : std::false_type {};
template <typename T>
struct is_predicate<T, std::decay_t<decltype(std::declval<T>()(AnyType()))>> : std:: true_type {};