February 14, 2016
So I wrote a simple ref counted string type because using the built in strings without the GC is extremely painful. It there any way I can get strings to implicitly convert to my custom string type?

Some way to make this work...

struct rstring {...}
void fun(rstring s) {...}
...
fun("hello world"); // Currently an error

Would be super nice if it would just call the opAssign when trying to call fun but I suppose that has some non-obvious problems for why it does not work that way.
February 14, 2016
On 02/14/2016 03:43 PM, Tofu Ninja wrote:
> So I wrote a simple ref counted string type because using the built in
> strings without the GC is extremely painful. It there any way I can get
> strings to implicitly convert to my custom string type?

No, D does not support such implicit conversions.

> struct rstring {...}
> void fun(rstring s) {...}
> ...
> fun("hello world"); // Currently an error
>
> Would be super nice if it would just call the opAssign when trying to
> call fun but I suppose that has some non-obvious problems for why it
> does not work that way.

The only way is to be explicit. Three common options:

    fun(rstring("hello world"));
    fun("hello world".to!rstring);
    fun(cast(rstring)"hello world");

Relatedly, user defined types can provide implicit conversions through 'alias this' but unfortunately, current implementation supports only one such operator.

Ali