Strange implicit conversion integers on concatenation
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Nov 12 20:23:42 UTC 2018
On 11/12/18 3:01 PM, 12345swordy wrote:
> 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
If we deprecate that we also need to deprecate:
string res = `Number value: ` ~ 65;
Not saying we shouldn't, just that there are many implications.
Andrei
More information about the Digitalmars-d
mailing list