diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-01-13 05:10:00 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-01-13 05:10:00 +0000 |
commit | 518fda1d121dcba3ad7276f5e9a94f733f6e5ecd (patch) | |
tree | e878d16963f64880e8bb29b5560ee5b668241252 /test/SemaCXX/overloaded-operator.cpp | |
parent | 11505a90aab8928e7e6e2c11b42a601801c3e899 (diff) |
Fix argument-passing bugs in a call to object
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62147 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/overloaded-operator.cpp')
-rw-r--r-- | test/SemaCXX/overloaded-operator.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/test/SemaCXX/overloaded-operator.cpp b/test/SemaCXX/overloaded-operator.cpp index d8be6bca49..e558faa880 100644 --- a/test/SemaCXX/overloaded-operator.cpp +++ b/test/SemaCXX/overloaded-operator.cpp @@ -124,17 +124,29 @@ void test_comma(X x, Y y) { X& xr = (x, x); } - struct Callable { int& operator()(int, double = 2.71828); // expected-note{{candidate function}} float& operator()(int, double, long, ...); // expected-note{{candidate function}} + + double& operator()(float); // expected-note{{candidate function}} +}; + +struct Callable2 { + int& operator()(int i = 0); + double& operator()(...) const; }; -void test_callable(Callable c) { +void test_callable(Callable c, Callable2 c2, const Callable2& c2c) { int &ir = c(1); float &fr = c(1, 3.14159, 17, 42); c(); // expected-error{{no matching function for call to object of type 'struct Callable'; candidates are:}} + + double &dr = c(1.0f); + + int &ir2 = c2(); + int &ir3 = c2(1); + double &fr2 = c2c(); } typedef float FLOAT; |