diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-03-07 23:17:44 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-03-07 23:17:44 +0000 |
commit | 1ce52caf0dfd18b8a2e04eddd9e381136ac81c21 (patch) | |
tree | 4b3d1cdcaf5f405c116315ae48a4769a1f3e4362 /clang/test/SemaCXX/overload-call.cpp | |
parent | 5cdbd7064cb6b4732df7d9e56bb66199877b4a2a (diff) | |
download | bcm5719-llvm-1ce52caf0dfd18b8a2e04eddd9e381136ac81c21.tar.gz bcm5719-llvm-1ce52caf0dfd18b8a2e04eddd9e381136ac81c21.zip |
Reference binding via user-defined conversion can compute a binding
that is not reference-related (because it requires another implicit
conversion to which we can find). Fixes PR6483.
llvm-svn: 97922
Diffstat (limited to 'clang/test/SemaCXX/overload-call.cpp')
-rw-r--r-- | clang/test/SemaCXX/overload-call.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/overload-call.cpp b/clang/test/SemaCXX/overload-call.cpp index 77e0908ef46..c286028c29a 100644 --- a/clang/test/SemaCXX/overload-call.cpp +++ b/clang/test/SemaCXX/overload-call.cpp @@ -386,3 +386,23 @@ namespace DerivedToBase { float &fr = f0(C()); } } + +namespace PR6483 { + struct X0 { + operator const unsigned int & () const; + }; + + struct X1 { + operator unsigned int & () const; + }; + + void f0(const bool &); + void f1(bool &); // expected-note 2{{not viable}} + + void g(X0 x0, X1 x1) { + f0(x0); + f1(x0); // expected-error{{no matching function for call}} + f0(x1); + f1(x1); // expected-error{{no matching function for call}} + } +} |