You can create a macro like
#define FUNCTORIZE(func) [](auto&&... val) \
noexcept(noexcept(func(std::forward<decltype(val)>(val)...))) -> decltype(auto) \
{return func(std::forward<decltype(val)>(val)...);}
which will let you wrap any callable into a closure object. You would use it like
auto constexpr predObj = FUNCTORIZE(pred);