June 10, 2018 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. |
Copyright © 1999-2021 by the D Language Foundation