From c6c224a78715d5e2c532fe318325fbca8e70e701 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 9 Dec 2022 20:00:08 +0300 Subject: Add noexcept to move constructors and move assignment operators --- libbutl/small-forward-list.hxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libbutl/small-forward-list.hxx') diff --git a/libbutl/small-forward-list.hxx b/libbutl/small-forward-list.hxx index 1278dc2..8d1cf68 100644 --- a/libbutl/small-forward-list.hxx +++ b/libbutl/small-forward-list.hxx @@ -5,6 +5,7 @@ #include // size_t #include // move() +#include // is_nothrow_move_constructible #include #include @@ -101,14 +102,20 @@ namespace butl return *this; } + // See small_vector for the move-constructor/assignment noexept + // expressions reasoning. + // small_forward_list (small_forward_list&& v) +#if !defined(_MSC_VER) || _MSC_VER > 1900 + noexcept (std::is_nothrow_move_constructible::value) +#endif : base_type (allocator_type (this)) { *this = std::move (v); // Delegate to operator=(&&). } small_forward_list& - operator= (small_forward_list&& v) + operator= (small_forward_list&& v) noexcept (false) { // VC14's implementation of operator=(&&) swaps pointers without regard // for allocator (fixed in 15). -- cgit v1.1