MSA Add templated operator += and template DefaultEntry::accumulate
authorPhil Miller <mille121@illinois.edu>
Mon, 14 Sep 2009 17:36:58 +0000 (12:36 -0500)
committerPhil Miller <mille121@illinois.edu>
Thu, 10 Dec 2009 22:23:01 +0000 (16:23 -0600)
src/libs/ck-libs/multiphaseSharedArrays/msa-common.h
src/libs/ck-libs/multiphaseSharedArrays/msa-distArray.h

index 4e3a54e3c99d242c427e02a92e633a3500d97de3..5cd726a27016dc743b72d8b8b2fc359cc4696e3b 100644 (file)
@@ -48,7 +48,8 @@ typedef enum { MSA_COL_MAJOR=0, MSA_ROW_MAJOR=1 } MSA_Array_Layout_t;
 template <class T, bool PUP_EVERY_ELEMENT=false >
 class DefaultEntry {
 public:
-    static inline void accumulate(T& a, const T& b) { a += b; }
+       template<typename U>
+    static inline void accumulate(T& a, const U& b) { a += b; }
     // identity for initializing at start of accumulate
     static inline T getIdentity() { return (T)0; }
     static inline bool pupEveryElement(){ return PUP_EVERY_ELEMENT; }
index 191dc65a4dad1dbaf6a1de105377d3847d1249e4..1e91886cd1d034aaf981a18afdb7c3d5aa851c22 100644 (file)
@@ -26,7 +26,8 @@ class Accumulable
     
 public:
     Accumulable(ENTRY &e_) : e(e_) {}
-    void operator+=(const ENTRY &rhs_)
+    template<typename T>
+    void operator+=(const T &rhs_)
         { ENTRY_OPS_CLASS::accumulate(e, rhs_); }
     template<typename T>
     void accumulate(const T& rhs)