The Case Against Autodecode

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 2 03:38:24 PDT 2016


On Wednesday, 1 June 2016 at 19:52:01 UTC, Andrei Alexandrescu 
wrote:
> On 06/01/2016 03:07 PM, ZombineDev wrote:
>> This is not autodecoding. There is nothing auto-magic w.r.t. 
>> strings in
>> plain foreach.
>
> I understand where you're coming from, but it actually is 
> autodecoding. Consider:
>
> byte[] a;
> foreach (byte x; a) {}
> foreach (short x; a) {}
> foreach (int x; a) {}
>
> That works by means of a conversion short->int. However:
>
> char[] a;
> foreach (char x; a) {}
> foreach (wchar x; a) {}
> foreach (dchar x; a) {}
>
> The latter two do autodecoding, not coversion as the rest of 
> the language.
>
>
> Andrei

This, deep down, point at the fact that conversion from/to char 
types are ill defined.

One should be able to convert from char to byte/ubyte but not the 
other way around.
One should be able to convert from byte to short but not from 
char to wchar.

Once you disable the naive conversions, then the autodecoding in 
foreach isn't inconsistent anymore.


More information about the Digitalmars-d mailing list