On Tuesday, 6 February 2018 at 00:18:08 UTC, Jonathan M Davis wrote:
On Monday, February 05, 2018 15:27:45 H. S. Teoh via Digitalmars-d wrote:
On Mon, Feb 05, 2018 at 01:56:33PM -0800, Walter Bright via Digitalmars-d
wrote:
> The idea is a byte can be implicitly converted to a dchar, > [...]

This is the root of the problem. Character types should never have been implicitly convertible to/from arithmetic integral types in the first place.

+1

Occasionally, it's useful, but in most cases, it just causes bugs - especially when you consider stuff like appending to a string.

- Jonathan M Davis

I remember a fairly old defect, or maybe it was just a post in the Learn forum. Doing "string" ~ 0 would append '\0' to a string, because the int was auto-converted to a char. This still works today:

import std.stdio;
void main()
{
    string msg = "Hello" ~ 0 ~ " D" ~ '\0';
    writeln(msg);
    writeln(cast(ubyte[])msg);
    writeln(cast(ubyte[])"Hello D");
}

Reply via email to