/*
TEST_OUTPUT:
---
fail_compilation/ice13356.d(32): Error: template instance Algebraic!(Tuple!(List)) recursive template expansion
fail_compilation/ice13356.d(15): Error: template instance ice13356.isPrintable!(List) error instantiating
fail_compilation/ice13356.d(33):        instantiated from here: Tuple!(List)
---
*/

struct Tuple(Types...)
{
    Types expand;
    alias expand this;

    static if (isPrintable!(Types[0]))
    {
    }
}

// T == Tuple!List, and accessing its .init will cause unresolved forward reference
enum bool isPrintable(T) = is(typeof({ T t; }));

struct Algebraic(AllowedTypesX...)
{
    alias AllowedTypes = AllowedTypesX;

    double x;   // dummy for the syntax Payload(d)
}

struct List
{
    alias Payload = Algebraic!(
        Tuple!(List)
    );

    Payload payload;

    this(double d) { payload = Payload(d); }
}

void main() {}
