// P0892R2 // { dg-do compile } // { dg-options "-std=c++2a" } #include class A {}; class B : public A {}; class C {}; class D { public: operator C() { return c; } C c; }; template struct S { explicit(!std::is_convertible_v) S(T1, T2) { } }; void foo () { A a; B b; C c; D d; S s{ 1, 2 }; S s2 = { 1, 2 }; S s3 = { &b, &a }; S s4 = { &a, &b }; // { dg-error "converting" } S s5 = { &b, &c }; // { dg-error "converting" } S s6 = { d, c }; }