instantiate each of a tuple of templates (Take 2)
John Colvin
john.loughran.colvin at gmail.com
Fri Aug 2 03:54:02 PDT 2013
On Thursday, 1 August 2013 at 15:08:53 UTC, John Colvin wrote:
> On Thursday, 1 August 2013 at 14:57:07 UTC, monarch_dodra wrote:
>> 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.
>>
>> Still not sure what you want, but you may want to look into
>> adjoin and staticMap.
>
> Sorry, now I've thought about it some more it appears I was
> asking the wrong question completely!
>
> Here's the situation (you might recognise the pattern from
> std.algorithm.map):
>
> template a(funs...)
> {
> auto a(R)(R r)
> {
> alias /*something*/ nonVoidFuns;
> alias /*something*/ voidFuns;
>
> //do stuff with nonVoidFuns and voidFuns applied to r
> }
> }
>
> so i need to find the return type of each fun, when called with
> something of type R (bearing in mind that fun!R may not be the
> same type as fun(r) as fun might be T fun(T)(T[] a), then
> filter funs to seperate the void functions from the non-void
> ones. Or something else to that effect.
>
> I've tried several things with std.typetuple.Filter but nothing
> seems to work.
Any ideas anyone? It seems like something that should be easily
done somehow.
More information about the Digitalmars-d-learn
mailing list