Commit 911bdcd8 authored by Stephan Hartmann's avatar Stephan Hartmann Committed by Commit Bot

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 <jdoerrie@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#772175}
parent 65018edb
...@@ -202,7 +202,7 @@ class flat_map : public ::base::internal::flat_tree< ...@@ -202,7 +202,7 @@ class flat_map : public ::base::internal::flat_tree<
~flat_map() = default; ~flat_map() = default;
flat_map& operator=(const 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. // Takes the first if there are duplicates in the initializer list.
flat_map& operator=(std::initializer_list<value_type> ilist); flat_map& operator=(std::initializer_list<value_type> ilist);
......
...@@ -125,7 +125,8 @@ class flat_tree { ...@@ -125,7 +125,8 @@ class flat_tree {
// Assume that move assignment invalidates iterators and references. // Assume that move assignment invalidates iterators and references.
flat_tree& operator=(const flat_tree&); flat_tree& operator=(const flat_tree&);
flat_tree& operator=(flat_tree&&); flat_tree& operator=(flat_tree&&) noexcept(
std::is_nothrow_move_assignable<underlying_type>::value);
// Takes the first if there are duplicates in the initializer list. // Takes the first if there are duplicates in the initializer list.
flat_tree& operator=(std::initializer_list<value_type> ilist); flat_tree& operator=(std::initializer_list<value_type> ilist);
...@@ -518,7 +519,9 @@ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=( ...@@ -518,7 +519,9 @@ auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=(
const flat_tree&) -> flat_tree& = default; const flat_tree&) -> flat_tree& = default;
template <class Key, class Value, class GetKeyFromValue, class KeyCompare> template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::operator=(flat_tree &&) auto flat_tree<Key, Value, GetKeyFromValue, KeyCompare>::
operator=(flat_tree&&) noexcept(
std::is_nothrow_move_assignable<underlying_type>::value)
-> flat_tree& = default; -> flat_tree& = default;
template <class Key, class Value, class GetKeyFromValue, class KeyCompare> template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment