[Issue 1603] String literals bind to pointer types

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Oct 21 10:28:32 PDT 2007


http://d.puremagic.com/issues/show_bug.cgi?id=1603


smjg at iname.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |spec
            Summary|Overload sets bug           |String literals bind to
                   |                            |pointer types




------- Comment #3 from smjg at iname.com  2007-10-21 12:28 -------
(In reply to comment #2)
> Literal strings should not bind to const char *.

By my experiments, string literals are simultaneously of all of these types:

invariant(char)*
invariant(wchar)*
invariant(dchar)*
invariant(char)[]
invariant(wchar)[]
invariant(dchar)[]

and therefore to the const versions of these types.  But there doesn't seem to
be any documentation to the fact that they bind to the pointer types (unless I
haven't found it).

So the issue has nothing to do with overload sets.  Try this and see.

----------
extern(C) void foo(in char*) {}

void main() {
        foo("string");
}

invariant(char)*   cp = "string";
invariant(wchar)*  wp = "string";
invariant(dchar)*  dp = "string";
invariant(char)[]  ca = "string";
invariant(wchar)[] wa = "string";
invariant(dchar)[] da = "string";
----------

And why is this issue set to version 2.007?  That version isn't even out yet.


-- 



More information about the Digitalmars-d-bugs mailing list