<div dir="ltr">On 11 April 2013 02:08, Andrei Alexandrescu <span dir="ltr"><<a href="mailto:SeeWebsiteForEmail@erdani.org" target="_blank">SeeWebsiteForEmail@erdani.org</a>></span> wrote:<br><div class="gmail_extra">

<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On 4/10/13 8:44 AM, Manu wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
On 10 April 2013 22:37, Andrei Alexandrescu<br></div>
<<a href="mailto:SeeWebsiteForEmail@erdani.org" target="_blank">SeeWebsiteForEmail@erdani.org</a> <mailto:<a href="mailto:SeeWebsiteForEmail@erdani.org" target="_blank">SeeWebsiteForEmail@<u></u>erdani.org</a>>><div>

<div><br>
wrote:<br>
<br>
    On 4/10/13 2:02 AM, Manu wrote:<br>
<br>
        I do use virtual functions, that's the point of classes. But most<br>
        functions are not virtual. More-so, most functions are trivial<br>
        accessors, which really shouldn't be virtual.<br>
<br>
<br>
    I'd say a valid style is to use free functions for non-virtual<br>
    methods. UFCS will take care of caller syntax.<br>
<br>
<br></div></div><div>
Valid, perhaps. But would you really recommend that design pattern?<br>
It seems a little obscure for no real reason. Breaks the feeling of the<br>
OO encapsulation principle somewhat.<br>
</div></blockquote>
<br>
It may as well be a mistake that nonvirtual functions are at all part of a class' methods. This has been quite painfully seen in C++ leading to surprising conclusions: <a href="http://goo.gl/dqZrr" target="_blank">http://goo.gl/dqZrr</a>.</blockquote>

<div><br></div><div>Hmm, some interesting points. Although I don't think I buy what he's selling.</div><div>It looks like over-complexity for the sake of it to me. I don't buy the real-world benefit. At least not more so than the obscurity it introduces (breaking the location of function definitions apart), and of course, C++ doesn't actually support this syntactically, it needs UFCS.</div>
<div style>Granted, the principle applies far better to D, ie, actually works...<br></div><div style><br></div><div style><br></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If I designed D's classes today, I'd only allow overridable methods and leave everything else to free functions.</blockquote>

<div><br></div><div>Why? Sorry, that article didn't sell me. Maybe I need to sit and simmer on it for a bit longer though. I like static methods (I prefer them to virtuals!) ;)</div><div style>If I had the methods spit, some inside the class at one indentation level, and most outside at a different level, it would annoy me, for OCD reasons. But I see no real advantage one way or the other in D, other than a cosmetic one.</div>
</div></div></div>