Idea: limited template expansion

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Wed Jan 20 14:00:45 PST 2016


On 1/20/16 4:44 PM, David Nadlinger wrote:
> On Wednesday, 20 January 2016 at 21:27:15 UTC, Steven Schveighoffer wrote:
>> It would be cool if the compiler could "expand" a finitely
>> instantiable template (one with a finite number of ways it can be
>> instantiated) based on a runtime value, and do the switch for me.
>
> Can't you just write a wrapper function that takes the template function
> as a compile-time argument and generates the switch for you by iterating
> over the std.traits.EnumMembers of said compile-time parameter?

I'm sure it can be done using some existing techniques, possibly with 
mixins.

However, one thing I didn't mention is the function called foo would 
likely simply be inline code in the higher level function, if it could be.

Imagine if you such a call returned something, and you simply used it 
throughout the rest of your function. The compiler could rewrite this as 
a template and compile all three versions and branch to the appropriate 
one, but your code would simply read as a straightforward procedural 
function.

In any case, it was an idea that I had, not sure if it makes a lot of 
sense. It would likely be a huge amount of work on the compiler.

-Steve


More information about the Digitalmars-d mailing list