You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mp...@apache.org on 2017/12/08 17:23:57 UTC

mesos git commit: Added `noexcept` specifier to `Option`.

Repository: mesos
Updated Branches:
  refs/heads/master 6ddb48e6c -> ed3fcdfbc


Added `noexcept` specifier to `Option`.

`noexcept` on move constructor and move assignment operator allows
the standard library to leverage some optimizations, e.g. `std::vector`
will move elements, when growing, rather than making copies.
Specifically, `mesos::Resources::Resource_` compiler-generated
constructor is deduced as `noexcept` after this change, improving
performance of operations on `mesos::Resources`.

Review: https://reviews.apache.org/r/63951/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/ed3fcdfb
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/ed3fcdfb
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/ed3fcdfb

Branch: refs/heads/master
Commit: ed3fcdfbcda0f2e32860d44b6654829c4952f7e6
Parents: 6ddb48e
Author: Dmitry Zhuk <dz...@twopensource.com>
Authored: Fri Dec 8 08:58:35 2017 -0800
Committer: Michael Park <mp...@apache.org>
Committed: Fri Dec 8 09:23:48 2017 -0800

----------------------------------------------------------------------
 3rdparty/stout/include/stout/option.hpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/ed3fcdfb/3rdparty/stout/include/stout/option.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/include/stout/option.hpp b/3rdparty/stout/include/stout/option.hpp
index 32133f9..72403e7 100644
--- a/3rdparty/stout/include/stout/option.hpp
+++ b/3rdparty/stout/include/stout/option.hpp
@@ -17,6 +17,7 @@
 
 #include <algorithm>
 #include <functional>
+#include <type_traits>
 
 #include <boost/functional/hash.hpp>
 
@@ -64,7 +65,9 @@ public:
     }
   }
 
-  Option(Option<T>&& that) : state(std::move(that.state))
+  Option(Option<T>&& that)
+      noexcept(std::is_nothrow_move_constructible<T>::value)
+    : state(std::move(that.state))
   {
     if (that.isSome()) {
       new (&t) T(std::move(that.t));
@@ -94,6 +97,7 @@ public:
   }
 
   Option<T>& operator=(Option<T>&& that)
+      noexcept(std::is_nothrow_move_constructible<T>::value)
   {
     if (this != &that) {
       if (isSome()) {