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