// { dg-do run } | |
extern "C" void abort (void); | |
template<typename _Tp> | |
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; | |
} |