1// { dg-do run } 2 3extern "C" void abort (void); 4 5template<typename _Tp> 6inline const _Tp& 7min(const _Tp& __a, const _Tp& __b) 8{ 9 if (__b < __a) 10 return __b; 11 return __a; 12} 13 14struct A 15{ 16 int m_x; 17 18 explicit A(int x) : m_x(x) {} 19 operator int() const { return m_x; } 20}; 21 22struct B : public A 23{ 24public: 25 explicit B(int x) : A(x) {} 26}; 27 28int data = 1; 29 30int main() 31{ 32 B b = B(10); 33 b = min(b, B(data)); 34 if (b != 1) 35 abort (); 36 return 0; 37} 38