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