Backport from mainline
2017-06-08 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/81017
* include/std/functional (function::function(function&&))
(function::operator=(function&&)): Add noexcept.
* testsuite/20_util/function/assign/move.cc: Check for noexcept.
* testsuite/20_util/function/cons/move.cc: Likewise.
From-SVN: r251678
2017-09-04 Jonathan Wakely <jwakely@redhat.com>
+ Backport from mainline
+ 2017-06-08 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/81017
+ * include/std/functional (function::function(function&&))
+ (function::operator=(function&&)): Add noexcept.
+ * testsuite/20_util/function/assign/move.cc: Check for noexcept.
+ * testsuite/20_util/function/cons/move.cc: Likewise.
+
Backport from mainline
2017-06-05 Jonathan Wakely <jwakely@redhat.com>
* The newly-created %function contains the target of @a __x
* (if it has one).
*/
- function(function&& __x) : _Function_base()
+ function(function&& __x) noexcept : _Function_base()
{
__x.swap(*this);
}
* object, then this operation will not throw an %exception.
*/
function&
- operator=(function&& __x)
+ operator=(function&& __x) noexcept
{
function(std::move(__x)).swap(*this);
return *this;
fo2 = (std::move(fo));
VERIFY( static_cast<bool>(fo2) );
VERIFY( fo2() == 2 );
+
+ static_assert(std::is_nothrow_move_assignable<function>::value,
+ "PR libstdc++/81017");
}
int main()
{
test01();
-
- return 0;
}
function fo2(std::move(fo));
VERIFY( static_cast<bool>(fo2) );
VERIFY( fo2() == 2 );
+
+ static_assert(std::is_nothrow_move_constructible<function>::value,
+ "PR libstdc++/81017");
}
int main()
{
test01();
-
- return 0;
}