digitalmars.D - Variable Template Args
- Craig Black (28/28) Feb 09 2006 I must praise D's templates. They transcend C++ templates by an order o...
- Walter Bright (4/9) Feb 09 2006 I know it'd be cool, and I want to do it. But it's a 2.0 thing.
I must praise D's templates. They transcend C++ templates by an order of magnitude. Much thanks to Walter and everyone who assisted him in making D's templates so darn cool. I know this will not be a priority for 1.0. I'm just thinking about future possibilities. Looking at Oskar's tuple code spurred my thinking. I wonder how difficult it would be to have an array of types as a template parameter. This would facilitate variable number of template arguments, an incredibly powerful template feature. So instead of template MakeTuple(T1=Empty, T2=Empty, T3=Empty, T4=Empty, T5=Empty, T6=Empty, T7=Empty, T8=Empty) { static if (is(T1 == Empty)) alias Empty MakeTuple; else alias Tuple!(T1,MakeTuple!(T2,T3,T4,T5,T6,T7,T8)) MakeTuple; } we could have something like template MakeTuple(Types[] ...) { static if (is(Types[0] == Empty)) alias Empty MakeTuple; else alias Tuple!(Types[0],MakeTuple!(Types[1..$-1])) MakeTuple; } Probably only Walter would know how hard something like this would be to implement, but it would be wickedly powerful. BTW, it's not a big deal, but why is "is" required to compare types. Does it make it easier for the compiler to parse or something? Otherwise, I don't see why it's necessary. -Craig
Feb 09 2006
"Craig Black" <cblack ara.com> wrote in message news:dsgbon$2e46$1 digitaldaemon.com...Probably only Walter would know how hard something like this would be to implement, but it would be wickedly powerful.I know it'd be cool, and I want to do it. But it's a 2.0 thing.BTW, it's not a big deal, but why is "is" required to compare types. Does it make it easier for the compiler to parse or something? Otherwise, I don't see why it's necessary.It makes the grammar straightforward.
Feb 09 2006