instantiate each of a tuple of templates (Take 2)

monarch_dodra monarchdodra at gmail.com
Thu Aug 1 07:07:10 PDT 2013


On Thursday, 1 August 2013 at 12:50:42 UTC, John Colvin wrote:
> template a(T ...)
> {
>     void a(R r)
>     {
>         //want to get a tuple of
>         //the members of T, each
>         //instantiated with R.
>
>         //do some RT stuff
>     }
> }
>
> Is this possible?
>
> Whatever I try, I keep running in to "cannot use local as 
> parameter to non-global template" errors, which I understand is 
> to do with context pointers
> However, this is all compile-time work based entirely on types, 
> there should be no need for any context pointers.

A static foreach should do the trick. (code not actually tested)

void a(R r) //void? Not Tuple!T ?
{
     Tuple!T ret
     foreach(i, Type; T)
     {
         ret[i] = r;
     }
     return ret;
}

Is this what you want? This assumes that every member or T is a 
type, and not a name.


More information about the Digitalmars-d-learn mailing list