31 lines
442 B
C
31 lines
442 B
C
// { dg-do assemble }
|
|
// Origin: Neil Booth <neilb@earthling.net> from bug #27.
|
|
|
|
struct A{};
|
|
|
|
struct B:A{};
|
|
|
|
struct C:B{};
|
|
|
|
struct CX
|
|
{
|
|
C c;
|
|
|
|
operator C&(){return c;}
|
|
};
|
|
|
|
// viable functions for call below
|
|
void f(A&);
|
|
void f(B&);
|
|
|
|
int main()
|
|
{
|
|
CX cx;
|
|
C c;
|
|
|
|
f(c); // the standard conversion to B& is better than to A&
|
|
|
|
f(cx); // after user defined conversion to C&
|
|
// the standard conversion to B& is better than to A&
|
|
}
|