From 6c0b8c7435ce10d2c09af30d30d7717711b4a663 Mon Sep 17 00:00:00 2001
From: Sebastian Eibl <sebastian.eibl@fau.de>
Date: Fri, 28 Sep 2018 13:06:08 +0200
Subject: [PATCH] made BlockDataID and ConstBlockDataID trivially copyable

---
 src/domain_decomposition/BlockDataID.h | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/domain_decomposition/BlockDataID.h b/src/domain_decomposition/BlockDataID.h
index db26b5436..d5e25b508 100644
--- a/src/domain_decomposition/BlockDataID.h
+++ b/src/domain_decomposition/BlockDataID.h
@@ -26,6 +26,8 @@
 #include "core/mpi/RecvBuffer.h"
 #include "core/mpi/SendBuffer.h"
 
+#include <type_traits>
+
 
 namespace walberla {
 namespace domain_decomposition {
@@ -42,14 +44,14 @@ class BlockDataID
 
 public:
 
-            BlockDataID()                          : id_( 0 ) {}
+            BlockDataID()                          = default;
    explicit BlockDataID( const uint_t id )         : id_( id ) {}
-            BlockDataID( const BlockDataID& bdid ) : id_( bdid.id_ ) {}
+            BlockDataID( const BlockDataID& bdid ) = default;
 
    void pack( mpi::SendBuffer & buffer ) const { buffer << id_; }
    void unpack( mpi::RecvBuffer & buffer ) { buffer >> id_; }
 
-   BlockDataID& operator=( const BlockDataID& bdid ) { id_ = bdid.id_; return *this; }
+   BlockDataID& operator=( const BlockDataID& bdid ) = default;
 
    bool operator==( const BlockDataID& bdid ) const { return id_ == bdid.id_; }
    bool operator!=( const BlockDataID& bdid ) const { return id_ != bdid.id_; }
@@ -59,26 +61,26 @@ public:
 
 private:
 
-   uint_t id_;
+   uint_t id_ = 0;
 
 }; // class BlockDataID
-
+static_assert( std::is_trivially_copyable<BlockDataID>::value, "BlockDataID has to be trivially copyable!");
 
 
 class ConstBlockDataID
 {
 public:
 
-            ConstBlockDataID()                               : id_( 0 ) {}
+            ConstBlockDataID()                               = default;
    explicit ConstBlockDataID( const uint_t id )              : id_( id ) {}
             ConstBlockDataID( const BlockDataID&      bdid ) : id_( bdid.id_ ) {}
-            ConstBlockDataID( const ConstBlockDataID& bdid ) : id_( bdid.id_ ) {}
+            ConstBlockDataID( const ConstBlockDataID& bdid ) = default;
 
    void pack( mpi::SendBuffer & buffer ) const { buffer << id_; }
    void unpack( mpi::RecvBuffer & buffer ) { buffer >> id_; }
 
    ConstBlockDataID& operator=( const BlockDataID&      bdid ) { id_ = bdid.id_; return *this; }
-   ConstBlockDataID& operator=( const ConstBlockDataID& bdid ) { id_ = bdid.id_; return *this; }
+   ConstBlockDataID& operator=( const ConstBlockDataID& bdid ) = default;
 
    bool operator==( const ConstBlockDataID& bdid ) const { return id_ == bdid.id_; }
    bool operator!=( const ConstBlockDataID& bdid ) const { return id_ != bdid.id_; }
@@ -88,10 +90,10 @@ public:
 
 private:
 
-   uint_t id_;
+   uint_t id_ = 0;
 
 }; // class ConstBlockDataID
-
+static_assert( std::is_trivially_copyable<ConstBlockDataID>::value, "ConstBlockDataID has to be trivially copyable!");
 
 
 } // namespace domain_decomposition
-- 
GitLab