summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/instantiate-subscript.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2009-10-29 20:17:01 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2009-10-29 20:17:01 +0000
commitadba46edc224c4767b72cd3d64ab527197fd89b0 (patch)
tree36a1802ba8d6443caab1dc6c86f0791646657a35 /clang/test/SemaTemplate/instantiate-subscript.cpp
parent9f1b2d4619a185c116ec0c34628da5583f7fff75 (diff)
downloadbcm5719-llvm-adba46edc224c4767b72cd3d64ab527197fd89b0.tar.gz
bcm5719-llvm-adba46edc224c4767b72cd3d64ab527197fd89b0.zip
Properly instantiate usage of overloaded operator []. Fixes PR5345.
llvm-svn: 85524
Diffstat (limited to 'clang/test/SemaTemplate/instantiate-subscript.cpp')
-rw-r--r--clang/test/SemaTemplate/instantiate-subscript.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/clang/test/SemaTemplate/instantiate-subscript.cpp b/clang/test/SemaTemplate/instantiate-subscript.cpp
index 434d84e2b89..20e2c39d0cc 100644
--- a/clang/test/SemaTemplate/instantiate-subscript.cpp
+++ b/clang/test/SemaTemplate/instantiate-subscript.cpp
@@ -6,7 +6,7 @@ struct Sub0 {
};
struct Sub1 {
- long &operator[](long);
+ long &operator[](long); // expected-note{{candidate function}}
};
struct ConvertibleToInt {
@@ -24,3 +24,18 @@ template struct Subscript0<int*, int, int&>;
template struct Subscript0<Sub0, int, int&>;
template struct Subscript0<Sub1, ConvertibleToInt, long&>;
template struct Subscript0<Sub1, Sub0, long&>; // expected-note{{instantiation}}
+
+// PR5345
+template <typename T>
+struct S {
+ bool operator[](int n) const { return true; }
+};
+
+template <typename T>
+void Foo(const S<int>& s, T x) {
+ if (s[0]) {}
+}
+
+void Bar() {
+ Foo(S<int>(), 0);
+}
OpenPOWER on IntegriCloud