import std.traits : isArray;
static assert(
is(ReplaceTypeUnless!(isArray, int, string, int*) == string*) &&
is(ReplaceTypeUnless!(isArray, int, string, int[]) == int[]) &&
is(ReplaceTypeUnless!(isArray, int, string, Tuple!(int, int[]))
== Tuple!(string, int[]))
);
Like ReplaceType, but does not perform replacement in types for which pred evaluates to true.