// PR c++/100252 // { dg-do compile { target c++14 } } struct B { }; struct A { int x; int y = x; constexpr operator B() { return B{}; } }; struct C { int x = 42; B b = A{x}; }; C c1 = {}; C c2 = { 42 }; constexpr C c3 = {}; constexpr C c4 = { 42 }; struct D { int x = 42; B b = (true, A{x}); }; D d1 = {}; D d2 = { 42 }; constexpr D d3 = {}; constexpr D d4 = { 42 }; struct E { int x = 42; B b = (A{x}); }; E e1 = {}; E e2 = { 42 }; constexpr E e3 = {}; constexpr E e4 = { 42 }; struct F { int x = 42; B b = (A{x}); }; F f1 = {}; F f2 = { 42 }; constexpr F f3 = {}; constexpr F f4 = { 42 }; void g (C c5 = C{}, C c6 = C{ 42 }, D d5 = D{}, D d6 = D{ 42 }, E e5 = E{}, E e6 = E{ 42 }, F f5 = F{}, F f6 = F{ 42 }) { }