aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.simple/p5-cxx0x.cpp
diff options
context:
space:
mode:
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.cpp32
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