67 lines
2.7 KiB
Diff
67 lines
2.7 KiB
Diff
|
From 911bdcd8cc5475be4ec4228cfbc85fc38f52857e Mon Sep 17 00:00:00 2001
|
||
|
From: Stephan Hartmann <stha09@googlemail.com>
|
||
|
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 <jdoerrie@chromium.org>
|
||
|
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
|
||
|
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<value_type> 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<underlying_type>::value);
|
||
|
// Takes the first if there are duplicates in the initializer list.
|
||
|
flat_tree& operator=(std::initializer_list<value_type> ilist);
|
||
|
|
||
|
@@ -518,7 +519,9 @@
|
||
|
const flat_tree&) -> flat_tree& = default;
|
||
|
|
||
|
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;
|
||
|
|
||
|
template <class Key, class Value, class GetKeyFromValue, class KeyCompare>
|