summaryrefslogtreecommitdiffstats
path: root/test/CXX/except
diff options
context:
space:
mode:
Diffstat (limited to 'test/CXX/except')
-rw-r--r--test/CXX/except/except.spec/p14.cpp24
-rw-r--r--test/CXX/except/except.spec/p5-pointers.cpp6
2 files changed, 27 insertions, 3 deletions
diff --git a/test/CXX/except/except.spec/p14.cpp b/test/CXX/except/except.spec/p14.cpp
index 8763a70..4f50afb 100644
--- a/test/CXX/except/except.spec/p14.cpp
+++ b/test/CXX/except/except.spec/p14.cpp
@@ -39,3 +39,27 @@ struct IC1 {
// we cannot currently compute the set of thrown types.
static_assert(noexcept(IC0()), "IC0() does not throw");
static_assert(!noexcept(IC1()), "IC1() throws");
+
+namespace PR13381 {
+ struct NoThrowMove {
+ NoThrowMove(const NoThrowMove &);
+ NoThrowMove(NoThrowMove &&) noexcept;
+ NoThrowMove &operator=(const NoThrowMove &);
+ NoThrowMove &operator=(NoThrowMove &&) noexcept;
+ };
+ struct NoThrowMoveOnly {
+ NoThrowMoveOnly(NoThrowMoveOnly &&) noexcept;
+ NoThrowMoveOnly &operator=(NoThrowMoveOnly &&) noexcept;
+ };
+ struct X {
+ const NoThrowMove a;
+ NoThrowMoveOnly b;
+
+ static X val();
+ static X &ref();
+ };
+ // These both perform a move, but that copy might throw, because it calls
+ // NoThrowMove's copy constructor (because PR13381::a is const).
+ static_assert(!noexcept(X(X::val())), "");
+ static_assert(!noexcept(X::ref() = X::val()), "");
+}
diff --git a/test/CXX/except/except.spec/p5-pointers.cpp b/test/CXX/except/except.spec/p5-pointers.cpp
index dd3c060..f855520 100644
--- a/test/CXX/except/except.spec/p5-pointers.cpp
+++ b/test/CXX/except/except.spec/p5-pointers.cpp
@@ -65,9 +65,9 @@ void fnptrs()
void (*(*t7)())() throw(B1) = &s8; // valid
void (*(*t8)())() throw(A) = &s8; // expected-error {{return types differ}}
void (*(*t9)())() throw(D) = &s8; // expected-error {{return types differ}}
- void (*t10)(void (*)() throw(B1)) = &s9; // valid expected-warning{{disambiguated}}
- void (*t11)(void (*)() throw(A)) = &s9; // expected-error {{argument types differ}} expected-warning{{disambiguated}}
- void (*t12)(void (*)() throw(D)) = &s9; // expected-error {{argument types differ}} expected-warning{{disambiguated}}
+ void (*t10)(void (*)() throw(B1)) = &s9; // valid
+ void (*t11)(void (*)() throw(A)) = &s9; // expected-error {{argument types differ}}
+ void (*t12)(void (*)() throw(D)) = &s9; // expected-error {{argument types differ}}
}
// Member function stuff
OpenPOWER on IntegriCloud