dmd/compiler/test/fail_compilation/diag13333.d
2022-07-09 18:53:07 +02:00

40 lines
828 B
D

/*
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;
}
}