| // PR c++/81167 |
| // { dg-do compile { target c++11 } } |
| // { dg-options "-Wconversion" } |
| |
| struct bar; |
| |
| struct foo |
| { |
| foo () {} |
| foo (const bar &) {} |
| }; |
| |
| struct bar |
| { |
| operator foo () && { return foo (); } |
| }; |
| |
| void test () |
| { |
| foo f = bar (); |
| // { dg-warning "choosing 'bar::operator foo\\(\\) &&' over 'foo::foo\\(const bar&\\)'" "" { target *-*-* } .-1 } |
| // { dg-warning "for conversion from 'bar' to 'foo'" "" { target *-*-* } .-2 } |
| // { dg-message "because conversion sequence for the argument is better" "" { target *-*-* } .-3 } |
| } |