From 15b12eaa3e140f57a95b1c0fcf0dd7c0fb6d5091 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 6 Nov 2024 10:35:27 +0100 Subject: [PATCH] avoid use of std::is_pod_v implement it ourself in terms of std::is_trivial and std::is_standard_layout. std::is_pod_v is deprecated in c++-20 --- opm/simulators/utils/MPIPacker.hpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/opm/simulators/utils/MPIPacker.hpp b/opm/simulators/utils/MPIPacker.hpp index fdf92d88e..25e91bdb8 100644 --- a/opm/simulators/utils/MPIPacker.hpp +++ b/opm/simulators/utils/MPIPacker.hpp @@ -34,6 +34,9 @@ namespace Opm::Mpi { namespace detail { +template +constexpr bool is_pod_v = std::is_standard_layout_v && std::is_trivial_v; + std::size_t mpi_buffer_size(const std::size_t bufsize, const std::size_t position); //! \brief Abstract struct for packing which is (partially) specialized for specific types. @@ -199,7 +202,7 @@ struct Packer template std::size_t packSize(const T& data) const { - return detail::Packing,T>::packSize(data, m_comm); + return detail::Packing,T>::packSize(data, m_comm); } //! \brief Calculates the pack size for an array. @@ -209,7 +212,7 @@ struct Packer template std::size_t packSize(const T* data, std::size_t n) const { - static_assert(std::is_pod_v, "Array packing not supported for non-pod data"); + static_assert(detail::is_pod_v, "Array packing not supported for non-pod data"); return detail::Packing::packSize(data, n, m_comm); } @@ -223,7 +226,7 @@ struct Packer std::vector& buffer, std::size_t& position) const { - detail::Packing,T>::pack(data, buffer, position, m_comm); + detail::Packing,T>::pack(data, buffer, position, m_comm); } //! \brief Pack an array. @@ -238,7 +241,7 @@ struct Packer std::vector& buffer, std::size_t& position) const { - static_assert(std::is_pod_v, "Array packing not supported for non-pod data"); + static_assert(detail::is_pod_v, "Array packing not supported for non-pod data"); detail::Packing::pack(data, n, buffer, position, m_comm); } @@ -252,7 +255,7 @@ struct Packer const std::vector& buffer, std::size_t& position) const { - detail::Packing,T>::unpack(data, buffer, position, m_comm); + detail::Packing,T>::unpack(data, buffer, position, m_comm); } //! \brief Unpack an array. @@ -267,7 +270,7 @@ struct Packer const std::vector& buffer, std::size_t& position) const { - static_assert(std::is_pod_v, "Array packing not supported for non-pod data"); + static_assert(detail::is_pod_v, "Array packing not supported for non-pod data"); detail::Packing::unpack(data, n, buffer, position, m_comm); }