There were features to support things like this in early versions of Swift and they were intentionally removed. Swift typically avoids implicit type conversions. They tend to explode compile times, and often lead to unexpected and undesired conversions. The current implicit conversion from T to T? is a common source of confusing compiler errors and incorrect overload calls in generic code. Building more things like that without many more changes to the Swift compiler is problematic. Even implicit numeric conversions, which the Swift team has expressed as desirable in principle, are not currently possible due to these problems and you need to explicitly convert.

The preferred way is to define an explicit overload in cases where it is useful: