template <typename Pipe = ml::Identity>
struct IsClass {
template<typename T>
using f = /* .... */;
};Than IsClass<Pipe> is a metafunction that passes to Pipe an ml::Bool<isClass>, where isClass is a bool marking whether T is a class type. Pipe defaults to ml::Identity.
f:: T -> ml::Bool<isClass> <-> Pipeusing T = ml::f<
ml::IsClass<>,
double>;
static_assert( std::is_same_v<
T,
ml::Bool<false>>);