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