Improve type conversion behavior for as<Type>() overloads