You'll need to write a template that determines if all types in a type tuple are the same:
template allSame(T...)
{
static if (T.length <= 1)
enum bool allSame = true;
else
enum bool allSame = is(T[0] == T[1]) && allSame!(T[1..$]);
}
Then just use this as a template constraint:
CommonType!T either(T...)(T a) if (a.length >= 1 && allSame!T)