diff options
Diffstat (limited to 'test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp')
-rw-r--r-- | test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp index 1ed93b137540..7f1b3b0f240e 100644 --- a/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp +++ b/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp @@ -30,29 +30,33 @@ struct DD { typedef int n; }; +PD pd(); +DD dd(); + struct A { - decltype(PD()) s; // ok - decltype(PD())::n n; // ok - decltype(DD()) *p = new decltype(DD()); // ok + decltype(pd()) s; // ok + decltype(pd())::n n; // ok + decltype(dd()) *p = new decltype(dd()); // ok }; +A a(); // Two errors here: one for the decltype, one for the variable. decltype( - PD(), // expected-error {{private destructor}} - PD()) pd1; // expected-error {{private destructor}} -decltype(DD(), // expected-error {{deleted function}} - DD()) dd1; -decltype(A(), - DD()) dd2; // expected-error {{deleted function}} + pd(), // expected-error {{private destructor}} + pd()) pd1; // expected-error {{private destructor}} +decltype(dd(), // expected-error {{deleted function}} + dd()) dd1; +decltype(a(), + dd()) dd2; // expected-error {{deleted function}} decltype( - PD(), // expected-error {{temporary of type 'PD' has private destructor}} + pd(), // expected-error {{temporary of type 'PD' has private destructor}} 0) pd2; -decltype(((13, ((DD())))))::n dd_parens; // ok -decltype(((((42)), PD())))::n pd_parens_comma; // ok +decltype(((13, ((dd())))))::n dd_parens; // ok +decltype(((((42)), pd())))::n pd_parens_comma; // ok // Ensure parens aren't stripped from a decltype node. -extern decltype(PD()) pd_ref; // ok +extern decltype(pd()) pd_ref; // ok decltype((pd_ref)) pd_ref3 = pd_ref; // ok, PD & decltype(pd_ref) pd_ref2 = pd_ref; // expected-error {{private destructor}} @@ -107,7 +111,7 @@ namespace RequireCompleteType { namespace Overload { DD operator+(PD &a, PD &b); - decltype(PD()) *pd_ptr; + decltype(pd()) *pd_ptr; decltype(*pd_ptr + *pd_ptr) *dd_ptr; // ok decltype(0, *pd_ptr) pd_ref2 = pd_ref; // ok |