diff options
Diffstat (limited to 'test/SemaCXX/copy-initialization.cpp')
| -rw-r--r-- | test/SemaCXX/copy-initialization.cpp | 20 | 
1 files changed, 20 insertions, 0 deletions
| diff --git a/test/SemaCXX/copy-initialization.cpp b/test/SemaCXX/copy-initialization.cpp index 3a63be0970de5..e5b1fd766bbd4 100644 --- a/test/SemaCXX/copy-initialization.cpp +++ b/test/SemaCXX/copy-initialization.cpp @@ -21,3 +21,23 @@ struct foo {  // PR3600  void test(const foo *P) { P->bar(); } // expected-error{{cannot initialize object parameter of type 'foo' with an expression of type 'foo const'}} + +namespace PR6757 { +  struct Foo { +    Foo(); +    Foo(Foo&); +  }; + +  struct Bar { +    operator const Foo&() const; +  }; + +  void f(Foo); // expected-note{{candidate function not viable: no known conversion from 'PR6757::Bar' to 'PR6757::Foo' for 1st argument}} + +  // FIXME: This isn't really the right reason for the failure. We +  // should fail after overload resolution. +  void g(Foo foo) { +    f(Bar()); // expected-error{{no matching function for call to 'f'}} +    f(foo); +  } +} | 
