char array weirdness
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Mar 29 17:05:29 PDT 2016
On 3/29/16 7:42 PM, H. S. Teoh via Digitalmars-d-learn wrote:
> On Tue, Mar 29, 2016 at 11:15:26PM +0000, Basile B. via Digitalmars-d-learn wrote:
>> On Monday, 28 March 2016 at 22:34:31 UTC, Jack Stouffer wrote:
>>> void main () {
>>> import std.range.primitives;
>>> char[] val = ['1', '0', 'h', '3', '6', 'm', '2', '8', 's'];
>>> pragma(msg, ElementEncodingType!(typeof(val)));
>>> pragma(msg, typeof(val.front));
>>> }
>>>
>>> prints
>>>
>>> char
>>> dchar
>>>
>>> Why?
>>
>> I've seen you so many time as a reviewer on dlang that I belive this Q
>> is a joke.
>> Even if obviously nobody can know everything...
>>
>> https://www.youtube.com/watch?v=l97MxTx0nzs
>>
>> seriously you didn't know that auto decoding is on and that it gives
>> you a dchar...
>
> Believe it or not, it was only last year (IIRC, maybe the year before)
> that Walter "discovered" that Phobos does autodecoding, and got pretty
> upset over it. If even Walter wasn't aware of this for that long...
Phobos treats narrow strings (wchar[], char[]) as ranges of dchar. It
was discovered that auto decoding strings isn't always the smartest
thing to do, especially for performance.
So you get things like this:
https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm/searching.d#L1622
That's right. Phobos insists that auto decoding must happen for narrow
strings. Except that's not the best thing to do so it inserts lots of
exceptions -- for narrow strings.
Mind blown?
-Steve
More information about the Digitalmars-d-learn
mailing list