www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Parameterized aliases

reply Piotr Szturmaj <bncrbme jadamspam.pl> writes:
Hi D community!

What do you think of such templated aliases:

template SomeTemplate(T1, T2) { }

alias Partial(T) = SomeTemplate!(int, T);

alias Specialized = Partial!float; // equivalent to SomeTemplate!(int, 
float)

I think they could be pretty helpful and they should be relatively easy 
to implement.
Aug 12 2013
next sibling parent "Meta" <jared771 gmail.com> writes:
On Monday, 12 August 2013 at 20:06:16 UTC, Piotr Szturmaj wrote:
 Hi D community!

 What do you think of such templated aliases:

 template SomeTemplate(T1, T2) { }

 alias Partial(T) = SomeTemplate!(int, T);

 alias Specialized = Partial!float; // equivalent to 
 SomeTemplate!(int, float)

 I think they could be pretty helpful and they should be 
 relatively easy to implement.

That's a neat idea. I don't know much about the compiler, so I'm not sure how easy to implement it would be, but something tells me that it wouldn't be trivial.
Aug 12 2013
prev sibling next sibling parent reply "monarch_dodra" <monarchdodra gmail.com> writes:
On Monday, 12 August 2013 at 20:06:16 UTC, Piotr Szturmaj wrote:
 Hi D community!

 What do you think of such templated aliases:

 template SomeTemplate(T1, T2) { }

 alias Partial(T) = SomeTemplate!(int, T);

 alias Specialized = Partial!float; // equivalent to 
 SomeTemplate!(int, float)

 I think they could be pretty helpful and they should be 
 relatively easy to implement.

That's just been implemented actually. Try it on DMD head :) I think they are actually called "template shorthand" or something, but yeah, it is basically parameterized aliases (also works with enums) import std.typetuple; alias Foo (U, T) = TypeTuple!(U, T); alias FooInt(T) = Foo!(int, T); void main() { alias UT = FooInt!(uint); }
Aug 12 2013
parent Piotr Szturmaj <bncrbme jadamspam.pl> writes:
W dniu 12.08.2013 23:10, monarch_dodra pisze:
 On Monday, 12 August 2013 at 20:06:16 UTC, Piotr Szturmaj wrote:
 Hi D community!

 What do you think of such templated aliases:

 template SomeTemplate(T1, T2) { }

 alias Partial(T) = SomeTemplate!(int, T);

 alias Specialized = Partial!float; // equivalent to SomeTemplate!(int,
 float)

 I think they could be pretty helpful and they should be relatively
 easy to implement.

That's just been implemented actually. Try it on DMD head :)

Oh... I'm not following D as I used to. Thanks!
Aug 12 2013
prev sibling parent "Meta" <jared771 gmail.com> writes:
On Monday, 12 August 2013 at 20:44:12 UTC, Meta wrote:
 That's a neat idea. I don't know much about the compiler, so 
 I'm not sure how easy to implement it would be, but something 
 tells me that it wouldn't be trivial.

Hmm, Dodra is right, I misunderstood.
Aug 12 2013