aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/expr
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-02-25 10:04:07 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-02-25 10:04:07 +0000
commit2c8aee454dac03e4918f0bb6e7fb849953056aba (patch)
tree744e2c883ae768d1d28ac61c0bbd3195b1df24cd /test/CXX/expr
parent7a9f49296a6454b7a6f0edce89dc99d413a7e14e (diff)
PR11956: C++11's special exception for accessing non-static data members from
unevaluated operands applies within member functions, too. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151443 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CXX/expr')
-rw-r--r--test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp b/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp
index 59c8660aa1..606300b1b2 100644
--- a/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp
+++ b/test/CXX/expr/expr.prim/expr.prim.general/p12-0x.cpp
@@ -27,4 +27,12 @@ namespace std {
class Poly { virtual ~Poly(); };
const std::type_info& k = typeid(S::m);
const std::type_info& m = typeid(*(Poly*)S::m); // expected-error {{invalid use of nonstatic data member}}
-const std::type_info& n = typeid(*(Poly*)(0*sizeof S::m)); \ No newline at end of file
+const std::type_info& n = typeid(*(Poly*)(0*sizeof S::m));
+
+namespace PR11956 {
+ struct X { char a; };
+ struct Y { int f() { return sizeof(X::a); } }; // ok
+
+ struct A { enum E {} E; };
+ struct B { int f() { return sizeof(A::E); } }; // ok
+}