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 reply "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
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
prev 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