// PR c++/89083 // { dg-do compile { target c++11 } } struct C { int a[3]; int i; }; struct B { C c[3]; }; struct A { B b[3]; }; template decltype(A{N, N}, T()) fn1(T t) { return t; } template decltype(A{{{N, N, N}, {N + 1}}}, T()) fn2(T t) { return t; } template decltype(A{{N + M}}, T()) fn3(T t) { return t; } void f() { fn1(1); fn2(1); fn3(1); }