Strange implicit conversion integers on concatenation

12345swordy alexanderheistermann at gmail.com
Mon Nov 12 20:01:31 UTC 2018


On Monday, 5 November 2018 at 15:36:31 UTC, uranuz wrote:
> Hello to everyone! By mistake I typed some code like the 
> following without using [std.conv: to] and get strange result. 
> I believe that following code shouldn't even compile, but it 
> does and gives non-printable symbol appended at the end of 
> string.
> The same problem is encountered even without [enum]. Just using 
> plain integer value gives the same. Is it a bug or someone 
> realy could rely on this behaviour?
>
> import std.stdio;
>
> enum TestEnum: ulong {
>    Item1 = 2,
>    Item3 = 5
> }
>
> void main()
> {
>     string res = `Number value: ` ~ TestEnum.Item1;
>     writeln(res);
> }
>
> Output:
> Number value: 

Welp with the recent rejection of the DIP 1005, I don't see this 
being deprecated any time soon.

-Alex


More information about the Digitalmars-d mailing list