Static Foreach

John Colvin john.loughran.colvin at gmail.com
Sun Nov 24 11:46:29 PST 2013


On Sunday, 24 November 2013 at 19:42:21 UTC, Philippe Sigaud 
wrote:
> On Sun, Nov 24, 2013 at 6:40 PM, Shammah Chancellor
> <anonymous at coward.com> wrote:
>
>
>> However, for non-string templates.   They have to be written 
>> in a recursive
>> form, which can be particularly difficult in some cases.
>>
>>         template FooTemplate()  //This code is totally made up 
>> and not meant
>> to do anything useful, or necessarily be valid.
>>         {
>>                 auto FooTemplate = TypeTuple!()
>>                 static foreach(member, __traits( allMembers, 
>> someClass)
>>                 {
>>                         FooTemplate = TypeTuple!(FooTemplate,
>> __traits(getMember, someClass, member));
>>                 }
>>         }
>>
>> What's the consensis on something like this?
>
> The consensus might well be 'use recursion' :) That's what I'd 
> do in
> your case. CT computation on types is a lot like functional
> programming: recursion and immutability.

However, the current set of tools is a bit lacking in that 
department. Hopefully I'll be able to rectify this with my 
attempt at a proper std.meta package :)   Unfortunately, it's 
proving to a bit of a stress-test on some dustier parts of the 
compiler (not to mention my brain), so progress is a bit slower 
than I would have hoped.


More information about the Digitalmars-d mailing list