diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-25 10:04:07 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-02-25 10:04:07 +0000 |
commit | 2c8aee454dac03e4918f0bb6e7fb849953056aba (patch) | |
tree | 744e2c883ae768d1d28ac61c0bbd3195b1df24cd /test/CXX/expr | |
parent | 7a9f49296a6454b7a6f0edce89dc99d413a7e14e (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.cpp | 10 |
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 +} |