(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
ipa/
pr92528.C
/* { dg-do compile } */
/* { dg-options "-O2 -std=c++11 -w" } */

template <typename _T1, typename _T2> struct A {
  _T1 first;
  _T2 second;
  template <typename _U1, typename _U2>
  A(_U1 &&p1, _U2 p2) : first(p1), second(p2) {}
};
class B {
public:
  B(char *);
};
struct C {
  virtual ~C();
};
struct D {
  virtual void registerReporter(B const &, int *) = 0;
};
template <typename, typename, typename, typename, typename = int> class F {
public:
  void _M_get_insert_unique_pos();
  template <typename... _Args> A<int, bool> _M_emplace_unique(_Args &&...);
};
template <typename _Key, typename _Val, typename _KeyOfValue, typename _Compare,
          typename _Alloc>
template <typename... _Args>
A<int, bool> F<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_unique(
    _Args &&...) try {
  _M_get_insert_unique_pos();
} catch (...) {
}
class G {
  F<int, int, int, int> _M_t;

public:
  void insert(A<const B &, int *&> p1) { _M_t._M_emplace_unique(p1); }
};
class H {
public:
  void registerReporter(B const &p1, int *p2) {
    A<const B &, int *&> a(p1, p2);
    m_factories.insert(a);
  }
  G m_factories;
};
namespace {
class J : C, D {
  void registerReporter(B const &p1, int *p2) {
    m_reporterRegistry.registerReporter(p1, p2);
  }
  H m_reporterRegistry;
};
J fn1();
} // namespace
void fn2() { fn1(); }
D &fn3();
class I {
public:
  I(B p1) { fn3().registerReporter(p1, new int); }
};
namespace {
I b("");
}