[Issue 3070] New: Implicitly conversion on function call

Robert Fraser fraserofthenight at gmail.com
Mon Jun 15 09:06:13 PDT 2009


d-bugmail at puremagic.com wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=3070
> 
>            Summary: Implicitly conversion on function call
>            Product: D
>            Version: 2.030
>           Platform: x86
>         OS/Version: Windows
>             Status: NEW
>           Severity: trivial
>           Priority: P2
>          Component: DMD
>         AssignedTo: nobody at puremagic.com
>         ReportedBy: k0l0b0k.void at gmail.com
> 
> 
> I have next pieces of code:
> 
> struct MyString
> {
>     public MyString opAssign(string pStr)
>     {
>         throw new Error("");
>     }
> 
>     public MyString opCast(string pStr)
>     {
>         throw new Error("");
>     }
> 
>     public MyString opImplicitCast(string pStr)
>     {
>         throw new Error("");
>     }
> 
>     this(string pStr)
>     {
>         throw new Error("");
>     }
> }
> 
> void foo(MyString pStr)
> {
> }
> 
> int main(char[][] args)
> {
>     MyString str = "test1";
>     str = "test2";
>     foo(str);
>     foo("test3");        // error "Error: cannot implicitly convert expression
> ("test3") of type immutable(char)[] to MyString
>     return 0;
> }
> 
> 
> This is just sample. So, my trouble is to pass string argument to foo() with
> implicit conversion to MyString struct (I also tried class, with no results).
> I'm googled by this topic, but nothing found. Can you help me? This is not a
> bug (I think), but the question - how I can implicitly convert from one object
> to another in the as C++ does (C++ will call constructor with parameter type
> "string"). How I can make same in D?
> 
> Thanks in advance!
> 

If you want quicker responses to questions, try the newsgroups or IRC. 
Bugzilla is usually for bugs :-). Anyway, user-defined implicit casting 
is not implemented in (any version of) D yet. Sorry!


More information about the Digitalmars-d-bugs mailing list