Static Foreach
    Shammah Chancellor 
    anonymous at coward.com
       
    Sun Nov 24 09:40:14 PST 2013
    
    
  
It seems that DMD already interprets some foreach's at compiletime if 
the argument is known at compile time:
eg:
	string FooString()
	{
		string stuff = "";
		foreach(member, __traits( allMembers, moduleName)
		{
			stuff ~= member;
		}
		return stuff;
	}
mixin(FooString());
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?
    
    
More information about the Digitalmars-d
mailing list