Add support implicit conversion between types

ilya-stromberg ilya-stromberg-2009 at yandex.ru
Fri Sep 6 10:41:28 PDT 2013


On Friday, 6 September 2013 at 13:01:14 UTC, Dicebot wrote:
> On Friday, 6 September 2013 at 11:32:11 UTC, Benjamin Thaut 
> wrote:
>> Its only a source of troubles in C++ because it is the default 
>> behavior. But if you design a library it can make the usage of 
>> your api easier and also you have a few more options to stay 
>> backwards compatible with your old api.
>
> Probably. But what is the gain? `foo(Foo(5))` looks better than 
> `foo(5)` to me in every possible way.
>
> For example, use case that justifies operator overloading 
> (despite the danger) in my eyes is ability to replace built-in 
> types with custom ones. What is the similar rationale for 
> implicit conversion?

In a few cases it's really useful.

Assume that you have user-defined type, for example BigInt.
You must implement A LOT OF "foo" functions which works only 
whith BigInt, like RSA, DSA and etc. For example, 100-500 
different functions.
Do you still want to write every time `foo(BigInt(5))`? 
(Remember: you have to use only BigInt).

So, the short answer is the same as for operator overloading: in 
my eyes is ability to replace built-in types with custom ones. 
Yes, it can be dangerous, and we must to provide explicit cast by 
default. But in many cases it can simplify a life and a code.


More information about the Digitalmars-d mailing list