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");
}