char array weirdness

Basile B. via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Mar 29 17:27:07 PDT 2016


On Wednesday, 30 March 2016 at 00:05:29 UTC, Steven Schveighoffer 
wrote:
> 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

https://www.youtube.com/watch?v=JKQwgpaLR6o

Listen to this then it'll be more clear.


More information about the Digitalmars-d-learn mailing list