Overload resolution for string
Steven Schveighoffer
schveiguy at yahoo.com
Sun Apr 11 20:55:25 PDT 2010
On Sun, 11 Apr 2010 15:33:09 -0400, Ali Çehreli <acehreli at yahoo.com> wrote:
> This is a bug, right? I've been assuming that unqualified string
> literals were immutable char arrays, but the behavior is different
> between "hello" vs. "hello"c.
>
> Am I missing something?
"hello" is typed as a string *only* if you are using at a string. If you
are using it as a wstring or a dstring, then it is typed that way. You
can even use it as a const(char) * and it becomes an ASCII C-style string
with a zero terminator!
This way, you can do things like this without casts, conversions, or
suffixes:
dstring ds = "hello";
Unfortunately, this leads to the problem, what version of foo to call when
supplied with just a literal? It can call all three!
I don't like the implementation -- give an error -- but it's not an
unreasonable choice. I'd file a bug and see what happens, perhaps Walter
can change it. I'd recommend assuming the type that occurs when using
auto.
-Steve
More information about the Digitalmars-d-learn
mailing list