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