Overload resolution for string
Ali Çehreli
acehreli at yahoo.com
Sun Apr 11 12:33:09 PDT 2010
My previous question was in the context of overloading opEquals. Here it
is again in a simpler form.
void foo(const(char)[] s)
{}
void foo(const(wchar)[] s)
{}
void foo(const(dchar)[] s)
{}
void main()
{
foo("hello");
}
Compilation error:
deneme.d(10024): Error: function deneme.foo called with argument types:
((string))
matches both:
deneme.foo(const(char)[] s)
and:
deneme.foo(const(dchar)[] s)
Adding overloads for string, wstring, and dstring does not help. Same
problem...
Replacing "hello" with either of "hello"c, "hello"w, or "hello"d fixes
the issue.
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?
Thank you,
Ali
More information about the Digitalmars-d-learn
mailing list