Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
References++.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 12 Mar 2019 09:20:14 +0000 (10:20 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 12 Mar 2019 15:41:48 +0000 (16:41 +0100)
include/simgrid/kernel/future.hpp
include/xbt/functional.hpp
src/s4u/s4u_Mailbox.cpp

index 482497a..b006a5e 100644 (file)
@@ -204,11 +204,11 @@ public:
   }
 };
 
-template <class T> void bind_promise(Promise<T> promise, Future<T> future)
+template <class T> void bind_promise(Promise<T>&& promise, Future<T> future)
 {
   class PromiseBinder {
   public:
-    explicit PromiseBinder(Promise<T> promise) : promise_(std::move(promise)) {}
+    explicit PromiseBinder(Promise<T>&& promise) : promise_(std::move(promise)) {}
     void operator()(Future<T> future) { simgrid::xbt::set_promise(promise_, future); }
 
   private:
index 7205ca8..608d372 100644 (file)
@@ -32,7 +32,7 @@ private:
   std::shared_ptr<const std::vector<std::string>> args_;
 
 public:
-  MainFunction(F code, std::vector<std::string> args)
+  MainFunction(F code, std::vector<std::string>&& args)
       : code_(std::move(code)), args_(std::make_shared<const std::vector<std::string>>(std::move(args)))
   {
   }
@@ -52,7 +52,7 @@ public:
   }
 };
 
-template <class F> inline std::function<void()> wrap_main(F code, std::vector<std::string> args)
+template <class F> inline std::function<void()> wrap_main(F code, std::vector<std::string>&& args)
 {
   return MainFunction<F>(std::move(code), std::move(args));
 }
index 52a0874..604cb6a 100644 (file)
@@ -29,7 +29,7 @@ MailboxPtr Mailbox::by_name(const std::string& name)
 {
   kernel::activity::MailboxImpl* mbox = kernel::activity::MailboxImpl::by_name_or_null(name);
   if (mbox == nullptr) {
-    mbox = simix::simcall([name] { return kernel::activity::MailboxImpl::by_name_or_create(name); });
+    mbox = simix::simcall([&name] { return kernel::activity::MailboxImpl::by_name_or_create(name); });
   }
   return MailboxPtr(&mbox->piface_, true);
 }