If you write:
Integer value = 10;
Float illegalFloat = static_cast<Float>(value);
The error message that comes back says:
error: call of overloaded 'Float(ren::Integer&)' is ambiguous
Really what it should say is "you can't do that". (Although whether you can do this specific case or not is up for debate in #7) Is there some static_assert or otherwise that could give a better message?