diff options
Diffstat (limited to 'clang/test/SemaCXX/overloaded-operator.cpp')
-rw-r--r-- | clang/test/SemaCXX/overloaded-operator.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/overloaded-operator.cpp b/clang/test/SemaCXX/overloaded-operator.cpp index 5fdbeebdfd1..16d37040f14 100644 --- a/clang/test/SemaCXX/overloaded-operator.cpp +++ b/clang/test/SemaCXX/overloaded-operator.cpp @@ -296,3 +296,31 @@ namespace pr5546 const char* a() { return sMoveCommands[X][0][0]; } const char* b() { return (*(sMoveCommands+X))[0][0]; } } + +// PR5512 and its discussion +namespace pr5512 { + struct Y { + operator short(); + operator float(); + }; + void g_test(Y y) { + short s = 0; + // DR507, this should be ambiguous, but we special-case assignment + s = y; + // Note: DR507, this is ambiguous as specified + //s += y; + } + + struct S {}; + void operator +=(int&, S); + void f(S s) { + int i = 0; + i += s; + } + + struct A {operator int();}; + int a; + void b(A x) { + a += x; + } +} |