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