mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
40 lines
828 B
D
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;
|
|
}
|
|
}
|