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.