// { dg-additional-options -fmodules-ts } // { dg-module-do run } export module node; // { dg-module-cmi node } export template void assert (T t) { static_assert (sizeof (T) == sizeof (int), "whoops"); } export class other { public: other () :f (5) {} void o () { } int f; }; export template class baselink : T, other { public: int Frob () { o (); return this->T::frob (); } }; export template bool trait () { return __has_nothrow_assign(T); } export inline bool ptrmemdata (other const &obj) { int other::*ptr = &other::f; return (obj.*ptr) == 5; } export template int ptrmemfn (T const &obj) { int (T::*ptr) () const = &T::frob; return (obj.*ptr) (); }