digitalmars.D - Re: playing around with D
- Carsten Scharfenberg <cathune_public web.de> Mar 05 2007
- "Jarrett Billingsley" <kb3ctd2 yahoo.com> Mar 05 2007
Daniel Keep Wrote:I can't see why it *should* work. The way I've always thought about it is that templates are parameterised namespaces. Since (/*alias*/ TC) is a type parameter, it makes no sense to pass in a namespace, whereas (alias TC) *does* since it's an alias to an arbitrary symbol. I dunno; maybe it's just my way of rationalising it :P
Your definitely right! - But I pass a TupleContainer to UseAppend - and TupleContainer is declared to be a struct. So it IS a type! But your remark provokes a new question; given the following declaration: template UseAppend( T ) { alias T UseAppend; } What is UseAppend? Is it a named template (or a parametrised namespace) or is it an alias to a real type? - In some way it is both...
Mar 05 2007
"Carsten Scharfenberg" <cathune_public web.de> wrote in message news:eshgp4$28kp$1 digitalmars.com...template UseAppend( T ) { alias T UseAppend; } What is UseAppend? Is it a named template (or a parametrised namespace) or is it an alias to a real type? - In some way it is both..
UseAppend!(blah) is a template, and UseAppend!(blah).UseAppend is an alias to a real type. It's just that there's a bit of syntactic sugar that makes it so that UseAppend!(blah) will implicitly refer to its .UseAppend member.
Mar 05 2007








"Jarrett Billingsley" <kb3ctd2 yahoo.com>