Should we add `a * b` for vectors?
Petar
Petar
Wed Oct 4 22:35:08 UTC 2017
On Wednesday, 4 October 2017 at 17:56:16 UTC, Walter Bright wrote:
> On 10/4/2017 2:28 AM, Dukc wrote:
>> But you can't deny our solution eats expressive power: If you
>> don't want to change code you're importing, you have to write
>> a wrapper type for int[] here.
>
> Please present an example.
I think that was the point of Timon's example. If you have a
module A that implements a range algorithm, a module B that
defines a range-like type (but actually its member function not
matching the exact signature of range primitives), you (module C)
as user of modules A and B are not able to provide range
primitive wrapper functions for the type defined in module B
(which you can't modify). So you can't use A's range algorithm on
type defined in B.
ADL solves this problem (adapting third-party libraries to your
needs).
Since D's modules are closed (can't be extended from the outside
like namespaces), if we want to support some form of ADL (the
primary use-case being algorithm libraries), we would probably
need to introduce some form of open for extension scopes like
namespaces. Or change extern (C++, namespace) to behave like
people coming from C++ may expect.
More information about the Digitalmars-d
mailing list