From 911bdcd8cc5475be4ec4228cfbc85fc38f52857e Mon Sep 17 00:00:00 2001 From: Stephan Hartmann Date: Wed, 27 May 2020 10:00:41 +0000 Subject: [PATCH] GCC: make base::{flat_map,flat_tree} move assignement operators noexcept Move assigment operator in ui::ColorSet is noexcept. Because this class has a member of type base::flat_map, move assignment operators of base::flat_map and base::flat_tree must be noexcept too. base::flat_tree noexcept is conditional to avoid build failure with NaCl. Otherwise GCC fails like this: ../../ui/color/color_set.cc:14:11: error: function 'ui::ColorSet& ui::ColorSet::operator=(ui::ColorSet&&)' defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification '' 14 | ColorSet& ColorSet::operator=(ColorSet&&) noexcept = default; | ^~~~~~~~ Bug: 819294 Change-Id: I10ce31851effc9ce78f2b5cbbb7148c339f065a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2179245 Commit-Queue: Jan Wilken Dörrie Reviewed-by: Daniel Cheng Cr-Commit-Position: refs/heads/master@{#772175} --- diff --git a/base/containers/flat_map.h b/base/containers/flat_map.h index ed82c5d..1af6b40 100644 --- a/base/containers/flat_map.h +++ b/base/containers/flat_map.h @@ -202,7 +202,7 @@ ~flat_map() = default; flat_map& operator=(const flat_map&) = default; - flat_map& operator=(flat_map&&) = default; + flat_map& operator=(flat_map&&) noexcept = default; // Takes the first if there are duplicates in the initializer list. flat_map& operator=(std::initializer_list ilist); diff --git a/base/containers/flat_tree.h b/base/containers/flat_tree.h index 9412ff6..ce6e92b 100644 --- a/base/containers/flat_tree.h +++ b/base/containers/flat_tree.h @@ -125,7 +125,8 @@ // Assume that move assignment invalidates iterators and references. flat_tree& operator=(const flat_tree&); - flat_tree& operator=(flat_tree&&); + flat_tree& operator=(flat_tree&&) noexcept( + std::is_nothrow_move_assignable::value); // Takes the first if there are duplicates in the initializer list. flat_tree& operator=(std::initializer_list ilist); @@ -518,7 +519,9 @@ const flat_tree&) -> flat_tree& = default; template -auto flat_tree::operator=(flat_tree &&) +auto flat_tree:: +operator=(flat_tree&&) noexcept( + std::is_nothrow_move_assignable::value) -> flat_tree& = default; template