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.