String of templated struct at compile time
divi
a at b5.re
Thu Sep 19 19:49:02 UTC 2019
Due to prior design choices, I have the following setup:
enum K { A, B }
mixin template Magic()
{
mixin(`alias Other = ` ~ magic() ~ `!(K.B);`);
}
struct S(K k) if (k == K.B) {}
struct S(K k)
if (k == K.A)
{
mixin Magic; // magic() returns "S"
}
struct T(K k) if (k == K.B) {}
struct T(K k)
if (k == K.A)
{
mixin Magic; // magic() returns "T"
}
alias A(alias T) = T!(K.A);
void main()
{
A!S a;
}
Is there any possible way I can write magic() so that the above
code works as intended? n.b. it must be able to go through the
alias A.
For what it's worth, I'm trying to define "Other" for the generic
struct parameterised with k == K.A such that I can instantiate
it's sister struct parameterised by K.B, e.g.
A!S a; // type is S!(K.A)
alias U = a.Other;
U b; // type is S!(K.B)
More information about the Digitalmars-d-learn
mailing list