template <typename Pipe = ml::Identity>
struct IsSame {
template<typename T, typename U>
using f = /* .... */;
};
Than IsSame<Pipe>
is a metafunction that passes to Pipe
an ml::Bool
<isSame>
, where isSame
is a bool
marking whether T
is the same type as U
. Pipe
defaults to ml::Identity
.
f:: T, U -> ml::Bool<isSame> <-> Pipe
using T = ml::f<
ml::IsSame<>,
int,
double>;
static_assert( std::is_same_v<
T,
ml::Bool<false>>);