Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add explicit keyword to simgrid::xbt::Task constructor.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 7 Dec 2017 14:11:00 +0000 (15:11 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 7 Dec 2017 16:01:55 +0000 (17:01 +0100)
include/xbt/functional.hpp
src/simix/smx_global.cpp

index dde3b7e..fcec559 100644 (file)
@@ -255,12 +255,7 @@ private:
   }
 
 public:
   }
 
 public:
-
-  template<class F>
-  Task(F code)
-  {
-    this->init(std::move(code));
-  }
+  template <class F> explicit Task(F code) { this->init(std::move(code)); }
 
   operator bool() const { return vtable_ != nullptr; }
   bool operator!() const { return vtable_ == nullptr; }
 
   operator bool() const { return vtable_ != nullptr; }
   bool operator!() const { return vtable_ == nullptr; }
@@ -297,7 +292,7 @@ auto makeTask(F code, Args... args)
 -> Task< decltype(code(std::move(args)...))() >
 {
   TaskImpl<F, Args...> task(std::move(code), std::make_tuple(std::move(args)...));
 -> Task< decltype(code(std::move(args)...))() >
 {
   TaskImpl<F, Args...> task(std::move(code), std::make_tuple(std::move(args)...));
-  return std::move(task);
+  return Task<decltype(code(std::move(args)...))()>(std::move(task));
 }
 
 }
 }
 
 }
index fb5a7c5..e5a9826 100644 (file)
@@ -570,7 +570,7 @@ void SIMIX_run()
  */
 smx_timer_t SIMIX_timer_set(double date, void (*callback)(void*), void *arg)
 {
  */
 smx_timer_t SIMIX_timer_set(double date, void (*callback)(void*), void *arg)
 {
-  smx_timer_t timer = new s_smx_timer_t(date, [callback, arg]() { callback(arg); });
+  smx_timer_t timer = new s_smx_timer_t(date, simgrid::xbt::makeTask([callback, arg]() { callback(arg); }));
   timer->handle_    = simix_timers.emplace(std::make_pair(date, timer));
   return timer;
 }
   timer->handle_    = simix_timers.emplace(std::make_pair(date, timer));
   return timer;
 }