[Issue 2367] New: Overloading error
Jarrett Billingsley
jarrett.billingsley at gmail.com
Sat Sep 20 11:36:13 PDT 2008
On Sat, Sep 20, 2008 at 2:01 PM, <d-bugmail at puremagic.com> wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=2367
>
> Summary: Overloading error
> Product: D
> Version: unspecified
> Platform: PC
> OS/Version: Linux
> Status: NEW
> Severity: normal
> Priority: P2
> Component: DMD
> AssignedTo: bugzilla at digitalmars.com
> ReportedBy: andrei at metalanguage.com
>
>
> The following code does not compile:
>
> struct S {
> void foo(in char[] s) {}
> void foo(in dchar[] s) {}
> }
>
> void main(string[] args) {
> S s;
> s.foo("a");
> }
>
> The second overload should not even be considered.
"string literals" do not have a type; they are, in some ways,
polysemous. They are considered char[], wchar[], or dchar[] based on
where they're used. If they're used in a situation where it could go
either way (such as this overloading case), it's an error.
The solution is simple: affix a 'c', 'w', or 'd' to the end of the
string literal to give it an explicit type.
More information about the Digitalmars-d-bugs
mailing list