mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00
41 lines
876 B
D
41 lines
876 B
D
/*
|
|
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() {}
|