From f8b39f8a79892f6ba1e7f902d8a4c28e206861f2 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Wed, 17 Oct 2018 15:33:44 +0200
Subject: [PATCH] Change signature of broadcast operations. Value is modified
 in-place.

---
 src/utils/Messenger.hpp | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp
index 6bb5d4cb0..0c56c2631 100644
--- a/src/utils/Messenger.hpp
+++ b/src/utils/Messenger.hpp
@@ -258,11 +258,10 @@ class Messenger
 
   template <typename DataType>
   PASTIS_INLINE
-  DataType broadcast(const DataType& data, int root_rank) const
+  void broadcast(DataType& data, int root_rank) const
   {
     if constexpr(std::is_same<DataType, int>()) {
-      int int_data = data;
-      return _broadcast_value(int_data, root_rank);
+      return _broadcast_value(data, root_rank);
     } else {
       static_assert(std::is_same<DataType, int>(), "unexpected type of data");
     }
@@ -270,7 +269,7 @@ class Messenger
 
   template <typename DataType>
   PASTIS_INLINE
-  Array<DataType> broadcast(const Array<DataType>& array, int root_rank) const
+  void broadcast(Array<DataType>& array, int root_rank) const
   {
     static_assert(not std::is_const_v<DataType>,
                   "cannot broadcast array of const");
@@ -295,7 +294,6 @@ class Messenger
       static_assert(std::is_trivial_v<DataType>,
                     "unexpected non trivial type of data");
     }
-    return array;
   }
 
   template <typename SendDataType,
@@ -375,9 +373,9 @@ allToAll(const Array<DataType>& array)
 
 template <typename DataType>
 PASTIS_INLINE
-Array<DataType> broadcast(const Array<DataType>& array, int root_rank)
+void broadcast(Array<DataType>& array, int root_rank)
 {
-  return messenger().broadcast(array, root_rank);
+  messenger().broadcast(array, root_rank);
 }
 
 template <typename SendDataType,
-- 
GitLab