// { dg-additional-options "-fmodules-ts" }
// declarations followed by friend definition injection
export module foo;
// { dg-module-cmi foo }
void foo (int, void *);
void foo (float, void *);
template <typename T> class TPL
{
  friend void foo (T x, void *p)
  {
    auto *obj = reinterpret_cast<TPL<T> *> (p);
    obj->member = x;
  }
  T member;
};
template class TPL<float>;  // instantiate