| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/diag13333.d(29): Error: template instance `VariantN!(maxSize!(S), T)` recursive template expansion |
| fail_compilation/diag13333.d(29): Error: template instance `diag13333.maxSize!(S)` error instantiating |
| fail_compilation/diag13333.d(34): instantiated from here: `Algebraic!(S)` |
| --- |
| */ |
| |
| template maxSize(T...) |
| { |
| static if (T.length == 1) |
| { |
| enum size_t maxSize = T[0].sizeof; |
| } |
| else |
| { |
| enum size_t maxSize = T[0].sizeof >= maxSize!(T[1 .. $]) |
| ? T[0].sizeof : maxSize!(T[1 .. $]); |
| } |
| } |
| |
| struct VariantN(size_t maxDataSize, AllowedTypesX...) |
| { |
| } |
| |
| template Algebraic(T...) |
| { |
| alias Algebraic = VariantN!(maxSize!T, T); |
| } |
| |
| struct DummyScope |
| { |
| alias A = Algebraic!S; |
| |
| static struct S // <- class |
| { |
| A entity; |
| } |
| } |