www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Extending UFCS to work with templates.

The idea is that one can use UFCS with templates and types if the 
first type matches:

void foo(string T)(int x);


"test".foo(4);  <==> foo!("test")(4)


class X;

void foo(T : X)(int x);

X.foo(4) <=> foo!X(4)

This would be unambiguous(since types are not variables in D).

This allows one to define generic functions on a whole class of 
types:

T New(T, Args...)(Args a)
{
    return new T(a);
}


which then is a useful idiom because it provides a nice wrapper 
for new. We could then use New in place of new in our design and 
then track allocations easier, convert seamlessly between gc and 
nogc allocated variables, etc.
Jun 09 2018