module util.fastcast;

U fastCast(U, T)(T t) if (is(T == class) && is(U == class) && is(U : T)) in {
	assert(cast(U) t);
} do {
	return *(cast(U*) &t);
}

// TODO: Check that T is an enum member.
U fastCast(U, T)(T t) if (is(U == union)) {
	return *(cast(U*) &t);
}