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