On 08/05/13 20:45, kdmult wrote:
> Hi,
>
> I would like to use a tuple template parameter in the default value of
> another template parameter in the same class declaration as follows.
>
> class A(P...) {}
>
> class B(R = A!P, P...) {}
>
> P... should be rightmost, so how can I use it in the preceding parameter?
If you don't need to specify R explicitly just add an
alias R = A!P;
inside B. Otherwise, you'll have to manually determine whether
R was given - it's not possible to automatically tell if the
first B parm is: a) R, or b) the first element of P. For example:
class B(_P...) {
static if (is(_P[0] _ == A!TP, TP...)) {
alias R = _P[0];
alias P = _P[1..$];
}
else {
alias R = A!P;
alias P = _P;
}
//...
}
artur