// { dg-do run } extern "C" void abort (void); template inline const _Tp& min(const _Tp& __a, const _Tp& __b) { if (__b < __a) return __b; return __a; } struct A { int m_x; explicit A(int x) : m_x(x) {} operator int() const { return m_x; } }; struct B : public A { public: explicit B(int x) : A(x) {} }; int data = 1; int main() { B b = B(10); b = min(b, B(data)); if (b != 1) abort (); return 0; }