On Monday, 4 October 2021 at 11:54:09 UTC, jmh530 wrote:
>On Thursday, 30 September 2021 at 22:19:33 UTC, Stefan Koch wrote:
>[snip]
In the code below you can only get the target of the alias, such as int and float. Would it be possible to use core.reflect or something similar, to be able to get back Foo or Foo!int?
template Foo(T)
{
static if(is(T == int))
alias Foo = int;
else
alias Foo = float;
}
void main() {
Foo!int x;
Foo!double y;
static assert(is(typeof(x) == int));
static assert(is(typeof(y) == float));
}
You can get Foo by asking for the name "Foo"
but it won't tell you much, right now as reflecting template declarations is a really tricky thing, they can have hidden errors in them, which puts the reflector in a bad state.
Therefore I don't touch the bodies of template declarations right now.