Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into klement
[simgrid.git] / include / simgrid / kernel / future.hpp
index c55f741d958940acdf4bfd7d5319b66476859465..906d70293790b7ff876b06524e07c5240b87f834 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2019. The SimGrid Team.
+/* Copyright (c) 2016-2020. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -48,7 +48,7 @@ public:
   FutureStateBase(FutureStateBase const&) = delete;
   FutureStateBase& operator=(FutureStateBase const&) = delete;
 
-  XBT_PUBLIC void schedule(simgrid::xbt::Task<void()>&& job);
+  XBT_PUBLIC void schedule(simgrid::xbt::Task<void()>&& job) const;
 
   void set_exception(std::exception_ptr exception)
   {
@@ -283,13 +283,9 @@ public:
 
   // Move type:
   Future(Future&) = delete;
-  Future& operator=(Future&) = delete;
-  Future(Future&& that) : state_(std::move(that.state_)) {}
-  Future& operator=(Future&& that)
-  {
-    state_ = std::move(that.state_);
-    return *this;
-  }
+  Future& operator=(const Future&) = delete;
+  Future(Future&&) noexcept        = default;
+  Future& operator=(Future&&) noexcept = default;
 
   /** Whether the future is valid:.
    *
@@ -451,9 +447,9 @@ public:
   // Move type
   Promise(Promise const&) = delete;
   Promise& operator=(Promise const&) = delete;
-  Promise(Promise&& that) : state_(std::move(that.state_)) { std::swap(future_get_, that.future_get_); }
+  Promise(Promise&& that) noexcept : state_(std::move(that.state_)) { std::swap(future_get_, that.future_get_); }
 
-  Promise& operator=(Promise&& that)
+  Promise& operator=(Promise&& that) noexcept
   {
     this->state_ = std::move(that.state_);
     this->future_get_ = that.future_get_;
@@ -508,8 +504,8 @@ public:
   // Move type
   Promise(Promise const&) = delete;
   Promise& operator=(Promise const&) = delete;
-  Promise(Promise&& that) : state_(std::move(that.state_)) { std::swap(future_get_, that.future_get_); }
-  Promise& operator=(Promise&& that)
+  Promise(Promise&& that) noexcept : state_(std::move(that.state_)) { std::swap(future_get_, that.future_get_); }
+  Promise& operator=(Promise&& that) noexcept
   {
     this->state_ = std::move(that.state_);
     this->future_get_ = that.future_get_;
@@ -526,13 +522,13 @@ public:
     future_get_ = true;
     return Future<void>(state_);
   }
-  void set_value()
+  void set_value() const
   {
     if (state_ == nullptr)
       throw std::future_error(std::future_errc::no_state);
     state_->set_value();
   }
-  void set_exception(std::exception_ptr exception)
+  void set_exception(std::exception_ptr exception) const
   {
     if (state_ == nullptr)
       throw std::future_error(std::future_errc::no_state);