User defined properties signatures

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 20 11:50:21 PDT 2015


On Monday, April 20, 2015 18:35:34 dvic via Digitalmars-d-learn wrote:
> Hi guys,
>
> It seems it's possible to define different read properties, only
> differing by the return type.

Not possible. Just like pretty much any C-derived language (C++, Java, C#,
etc.) the return type of a function is not considered in function
overloading, and it is illegal to overload a function based on its return
type.

> Why is the compiler not complaining about defining 2 read
> properties and it does
> otherwise when using both of them?

Now, that is weird. I would fully expect something like

struct S
{
    @property int foo() { return 7; }
    @property string foo() { return "foo"; }
}

to result in an error, but for some reason, it doesn't (and it doesn't seem
to have anything to do with the fact that it's a property function). I have
no idea why and would be inclined to argue that it's a compiler bug (though
a compiler dev may be able to come up with a good reason for why it's acting
the way it is). However, since it _is_ failing to compile as soon as you use
the function, the only real problem is that if you declare a function
without ever testing it, you risk having a duplicate function without
knowing it.  But still, I really think that the compiler should be giving an
error message even if you don't call it.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list