Thanks for the help!
On Friday, 20 September 2019 at 10:13:49 UTC, Ali Çehreli wrote:
I don't understand everything here
My bad, I guess once one spends too much time on a problem, it
gets hard to explain. What if I put it this way ?
TypedParameter!(ulong, int, string) p1 = new
TypedParameter!(ulong, int, string)();
Parameter p2 = new TypedParameter!(ulong, int, string)();
writeln(typeid(p1.value.AllowedTypes)); //
(ulong,int,immutable(char)[])
writeln(typeid(p2.value.AllowedTypes)); // ()
My dream would be a way to make that last statement return the
same thing as the penultimate one.. If that even is possible.
the 'typeid' expression and the 'TypeInfo' class hierarchy that
it returns can be useful in this case.
I can get the correct TypeInfo through virtual functions by
adding a method like this to Parameter and its sub-classes:
override TypeInfo_Tuple allowedTypes()
{
return typeid(this.value.AllowedTypes);
}
But as far as I know, I can't use this for instantiating
templates, can I ? Especially since `this` doesn't exist at
compile time.