// P0892R2 // { dg-do compile } // { dg-options "-std=c++2a" } template struct S { explicit(T) S(int); explicit(!T) S(int, int); }; template struct S2 { explicit(N) S2(T); }; template struct S3 { explicit((T) 1.0) S3(int); }; int main () { S<> s1 = { 1 }; // { dg-error "converting" } S s2 = { 1 }; // { dg-error "converting" } S s3 = { 1 }; S<> s4{ 1 }; S s5{ 1 }; S<> s6 = { 1, 2 }; S s7 = { 1, 2 }; S s8 = { 1, 2 }; // { dg-error "converting" } S s9{ 1, 2 }; const int x = 1; S s10 = { 1 }; // { dg-error "converting" } S s11{ 2 }; S2 s12 = { 1 }; // { dg-error "converting" } S3 s13 = { 1 }; // { dg-error "converting" } }