summaryrefslogtreecommitdiffstats
path: root/test/SemaCXX/address-of.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaCXX/address-of.cpp')
-rw-r--r--test/SemaCXX/address-of.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/test/SemaCXX/address-of.cpp b/test/SemaCXX/address-of.cpp
index 69fcaff..373e44c 100644
--- a/test/SemaCXX/address-of.cpp
+++ b/test/SemaCXX/address-of.cpp
@@ -22,12 +22,12 @@ enum E {
};
void test() {
- (void)&Enumerator; // expected-error{{address expression must be an lvalue or a function designator}}
+ (void)&Enumerator; // expected-error{{cannot take the address of an rvalue of type 'E'}}
}
template<int N>
void test2() {
- (void)&N; // expected-error{{address expression must be an lvalue or a function designator}}
+ (void)&N; // expected-error{{cannot take the address of an rvalue of type 'int'}}
}
// PR clang/3222
@@ -41,6 +41,14 @@ struct PR11066 {
};
void PR11066::test() {
- int (PR11066::*ptr)(int) = & &PR11066::foo; // expected-error{{address expression must be an lvalue or a function designator}}
+ int (PR11066::*ptr)(int) = & &PR11066::foo; // expected-error{{extra '&' taking address of overloaded function}}
}
+namespace test3 {
+ // emit no error
+ template<typename T> struct S {
+ virtual void f() = 0;
+ };
+ template<typename T> void S<T>::f() { T::error; }
+ void (S<int>::*p)() = &S<int>::f;
+}
OpenPOWER on IntegriCloud