import std.variant, std.stdio; --- struct NodeTypeA(T) { T[] children; } struct NodeTypeB(T) { Tree children; } struct Leaf(T) { T delegate() dg; }
alias Tree = Algebraic!(Leaf, NodeTypeA!This, NodeTypeB!This); void main() { Tree t; } --- yields tmp.d(6): Error: functions cannot return opaque type This by valuetmp.d(8): Error: template instance tmp.Leaf!(This) error instantiating
This limitation seems arbitrary to me. What's the reason here?