From 3c565ef59ea0d6d5f76de0daf56e64560a97a653 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Thu, 27 Aug 2020 11:01:22 +0200 Subject: [PATCH] Use const_cast< > in variant serialization --- ebos/eclmpiserializer.hh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ebos/eclmpiserializer.hh b/ebos/eclmpiserializer.hh index 5015c1a6b..13f15932a 100644 --- a/ebos/eclmpiserializer.hh +++ b/ebos/eclmpiserializer.hh @@ -159,7 +159,7 @@ public: */ template - void variant(std::variant& data) + void variant(const std::variant& data) { auto pack_size = [&](auto& d) { m_packSize += Mpi::packSize(d, m_comm); @@ -177,16 +177,17 @@ public: std::visit([&](auto& arg) { pack(arg); }, data); } else if (m_op == Operation::UNPACK) { size_t index; + std::variant& mutable_data = const_cast&>(data); Mpi::unpack(index, m_buffer, m_position, m_comm); if (index == 0) { T0 t0; Mpi::unpack(t0, m_buffer, m_position, m_comm); - data = t0; + mutable_data = t0; } else if (index == 1) { T1 t1; Mpi::unpack(t1, m_buffer, m_position, m_comm); - data = t1; + mutable_data = t1; } else throw std::logic_error("Internal meltdown in std::variant unpack loaded index=" + std::to_string(index) + " allowed range: [0,1]"); }