From e2eac12593e9fe7329aad05fbd8459d0b32d7e48 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Fri, 2 Sep 2022 13:02:35 +0200 Subject: [PATCH] eclmpiserializer: improve vector handler use has_serializeOp trait --- ebos/eclmpiserializer.hh | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ebos/eclmpiserializer.hh b/ebos/eclmpiserializer.hh index 1b5f6c316..eea9a685b 100644 --- a/ebos/eclmpiserializer.hh +++ b/ebos/eclmpiserializer.hh @@ -102,9 +102,8 @@ public: //! \brief Handler for vectors. //! \tparam T Type for vector elements - //! \tparam complexType Whether or not T is a complex type //! \param data The vector to (de-)serialize - template + template void vector(std::vector& data) { auto handle = [&](auto& d) @@ -114,10 +113,10 @@ public: pair(it); else if constexpr (is_ptr::value) ptr(it); - else if constexpr (!complexType) - (*this)(it); - else + else if constexpr (has_serializeOp::value) it.serializeOp(*this); + else + (*this)(it); } }; @@ -245,9 +244,9 @@ public: auto handle = [&](auto& d) { if constexpr (is_vector::value) - this->template vector(d); + this->vector(d); else if constexpr (is_ptr::value) - ptr(d); + this->ptr(d); else if constexpr (complexType) d.serializeOp(*this); else @@ -295,7 +294,7 @@ public: auto handle = [&](auto& d) { if constexpr (is_vector::value) - this->template vector(d); + this->vector(d); else if constexpr (is_ptr::value) ptr(d); else if constexpr (complexType)