Do non-member functions improve encapsulation in D?

Lars T. Kyllingstad via Digitalmars-d digitalmars-d at puremagic.com
Sun Apr 20 01:41:50 PDT 2014


On Sunday, 20 April 2014 at 08:25:47 UTC, monarch_dodra wrote:
>
> One thing to keep in mind, is that with the module system, and 
> templates, is that free functions can only be called if the 
> module *knows* about your free function.
>
> For example "int[]" is a range thanks to the free 
> "front/popFront", but also *because* `std.range` imports 
> `std.array`, and as such *knows* about them.
>
> If you tried the same thing yourself, with your user defined 
> type, it wouldn't work.

Very true.  This reminds me of another difference between D and 
C++, namely the fact that C++ supports ADL/Koenig lookup, while D 
doesn't.  If it did, arrays would no longer be special in this 
way.  I'm not sure whether the benefits of ADL outweigh the 
drawbacks, though.


More information about the Digitalmars-d mailing list