100 lines
4.1 KiB
Diff
100 lines
4.1 KiB
Diff
From 130a5ae24a02daba8729ba2216bcaf3dbfacea69 Mon Sep 17 00:00:00 2001
|
||
From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
|
||
Date: Fri, 8 Feb 2019 16:58:38 +0000
|
||
Subject: [PATCH] media::learning: Make LabelledExample's move assignment
|
||
operator noexcept
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
The GCC build is currently broken with an error like this:
|
||
|
||
../../media/learning/common/labelled_example.cc:20:1: error: function ‘media::learning::LabelledExample::LabelledExample(media::learning::LabelledExample&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’
|
||
LabelledExample::LabelledExample(LabelledExample&& rhs) noexcept = default;
|
||
^~~~~~~~~~~~~~~
|
||
|
||
With GCC, having that noexcept marker requires all members to be marked with
|
||
noexcept themselves, and TargetValue was missing some assignment operators
|
||
and noexcept markers.
|
||
|
||
clang is fine because we pass -fno-exceptions and it disables the same error
|
||
there, while GCC continues to raise it (bug 843143 and its corresponding CL
|
||
have a longer discussion on this issue).
|
||
|
||
Bug: 819294
|
||
Change-Id: Ide30932fc466ccb52d6883a82777e703dae48798
|
||
Reviewed-on: https://chromium-review.googlesource.com/c/1458210
|
||
Commit-Queue: Frank Liberato <liberato@chromium.org>
|
||
Reviewed-by: Frank Liberato <liberato@chromium.org>
|
||
Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
|
||
Cr-Commit-Position: refs/heads/master@{#630355}
|
||
---
|
||
media/learning/common/labelled_example.cc | 3 ++-
|
||
media/learning/common/labelled_example.h | 2 +-
|
||
media/learning/common/value.cc | 6 ++++++
|
||
media/learning/common/value.h | 4 ++++
|
||
4 files changed, 13 insertions(+), 2 deletions(-)
|
||
|
||
diff --git a/media/learning/common/labelled_example.cc b/media/learning/common/labelled_example.cc
|
||
index 76d08509298e..43e834f9f3cf 100644
|
||
--- a/media/learning/common/labelled_example.cc
|
||
+++ b/media/learning/common/labelled_example.cc
|
||
@@ -59,7 +59,8 @@ bool LabelledExample::operator<(const LabelledExample& rhs) const {
|
||
LabelledExample& LabelledExample::operator=(const LabelledExample& rhs) =
|
||
default;
|
||
|
||
-LabelledExample& LabelledExample::operator=(LabelledExample&& rhs) = default;
|
||
+LabelledExample& LabelledExample::operator=(LabelledExample&& rhs) noexcept =
|
||
+ default;
|
||
|
||
TrainingData::TrainingData() = default;
|
||
|
||
diff --git a/media/learning/common/labelled_example.h b/media/learning/common/labelled_example.h
|
||
index 4f43c54e7a76..365abc3c0ebf 100644
|
||
--- a/media/learning/common/labelled_example.h
|
||
+++ b/media/learning/common/labelled_example.h
|
||
@@ -40,7 +40,7 @@ struct COMPONENT_EXPORT(LEARNING_COMMON) LabelledExample {
|
||
bool operator<(const LabelledExample& rhs) const;
|
||
|
||
LabelledExample& operator=(const LabelledExample& rhs);
|
||
- LabelledExample& operator=(LabelledExample&& rhs);
|
||
+ LabelledExample& operator=(LabelledExample&& rhs) noexcept;
|
||
|
||
// Observed feature values.
|
||
// Note that to interpret these values, you probably need to have the
|
||
diff --git a/media/learning/common/value.cc b/media/learning/common/value.cc
|
||
index 9c9395c25d4e..12ea399d24c3 100644
|
||
--- a/media/learning/common/value.cc
|
||
+++ b/media/learning/common/value.cc
|
||
@@ -23,6 +23,12 @@ Value::Value(const std::string& x) : value_(base::PersistentHash(x)) {}
|
||
|
||
Value::Value(const Value& other) : value_(other.value_) {}
|
||
|
||
+Value::Value(Value&& rhs) noexcept = default;
|
||
+
|
||
+Value& Value::operator=(const Value& rhs) = default;
|
||
+
|
||
+Value& Value::operator=(Value&& rhs) noexcept = default;
|
||
+
|
||
bool Value::operator==(const Value& rhs) const {
|
||
return value_ == rhs.value_;
|
||
}
|
||
diff --git a/media/learning/common/value.h b/media/learning/common/value.h
|
||
index 0e64da961f34..62f4953f691c 100644
|
||
--- a/media/learning/common/value.h
|
||
+++ b/media/learning/common/value.h
|
||
@@ -38,6 +38,10 @@ class COMPONENT_EXPORT(LEARNING_COMMON) Value {
|
||
explicit Value(const std::string& x);
|
||
|
||
Value(const Value& other);
|
||
+ Value(Value&&) noexcept;
|
||
+
|
||
+ Value& operator=(const Value&);
|
||
+ Value& operator=(Value&&) noexcept;
|
||
|
||
bool operator==(const Value& rhs) const;
|
||
bool operator!=(const Value& rhs) const;
|
||
--
|
||
2.20.1
|
||
|