diff --git a/src/id_pool.h b/src/id_pool.h index 7d4cedf..16b2611 100644 --- a/src/id_pool.h +++ b/src/id_pool.h @@ -1,9 +1,9 @@ #pragma once #include +#include #include "def.h" -#include "platform/detail.h" namespace ipc { @@ -37,7 +37,11 @@ struct id_type<0, AlignSize> { }; template +#if __cplusplus >= 201703L + std::size_t AlignSize = (std::min)(DataSize, alignof(std::size_t))> +#else /*__cplusplus < 201703L*/ + std::size_t AlignSize = (alignof(std::size_t) < DataSize) ? alignof(std::size_t) : DataSize> +#endif/*__cplusplus < 201703L*/ class id_pool { public: enum : std::size_t { diff --git a/src/ipc.cpp b/src/ipc.cpp index 0253de7..c23dbcd 100644 --- a/src/ipc.cpp +++ b/src/ipc.cpp @@ -23,7 +23,11 @@ using namespace ipc; using msg_id_t = std::size_t; template +#if __cplusplus >= 201703L + std::size_t AlignSize = (std::min)(DataSize, alignof(std::size_t))> +#else /*__cplusplus < 201703L*/ + std::size_t AlignSize = (alignof(std::size_t) < DataSize) ? alignof(std::size_t) : DataSize> +#endif/*__cplusplus < 201703L*/ struct msg_t; template diff --git a/src/memory/alloc.h b/src/memory/alloc.h index 7e2054e..9a5627e 100644 --- a/src/memory/alloc.h +++ b/src/memory/alloc.h @@ -10,8 +10,6 @@ #include "def.h" #include "rw_lock.h" -#include "platform/detail.h" - namespace ipc { namespace mem { @@ -150,7 +148,11 @@ public: using alloc_policy = AllocP; enum : std::size_t { - block_size = ipc::detail::max_val(BlockSize, sizeof(void*)) +#if __cplusplus >= 201703L + block_size = (std::max)(BlockSize, sizeof(void*)) +#else /*__cplusplus < 201703L*/ + block_size = (BlockSize < sizeof(void*)) ? sizeof(void*) : BlockSize +#endif/*__cplusplus < 201703L*/ }; private: diff --git a/src/platform/detail.h b/src/platform/detail.h index d7e4031..5a859bf 100644 --- a/src/platform/detail.h +++ b/src/platform/detail.h @@ -82,16 +82,6 @@ constexpr auto shared_lock(T&& lc) { #endif/*__cplusplus < 201703L*/ -template -constexpr T const & max_val(const T& a, const T& b) { - return a < b ? b : a; -} - -template -constexpr T const & min_val(const T& a, const T& b) { - return b < a ? b : a; -} - std::size_t calc_unique_id(); template