ADL

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Mon Sep 5 02:25:42 PDT 2016


On 2016-09-05 11:06, Andrei Alexandrescu wrote:

> That is correct (and btw the example should use the member call syntax).
> But touching a type's module is modifying the type. -- Andrei

Not sure what that has to do with anything.

Example:

module foo;

struct Foo
{
     int[] array = [1];
}

int front(Foo foo)
{
     return foo.array[0];
}

module algo;

void algorithm(Range)(Range range)
{
     auto e = range.front; // Error: no property 'front' for type 'Foo'
}

module main

import foo;
import algo;

void main()
{
     algorithm(Foo());
}

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list