From cdc265cedf050dde926f6ccf782dfefbe0ea83f8 Mon Sep 17 00:00:00 2001 From: Albert S Date: Fri, 29 Apr 2022 21:16:11 +0200 Subject: [PATCH] c++: exile_launch(): Correct std::enable_if logic if type is a ptr --- exile.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exile.hpp b/exile.hpp index 61f1eb3..a2463de 100644 --- a/exile.hpp +++ b/exile.hpp @@ -119,7 +119,7 @@ inline int do_clone(int (*clonefn)(void *), void *launcharg) } template -typename std::enable_if_t, T> exile_launch(struct exile_policy *policy, U fn, Args && ... args) +typename std::enable_if_t && !std::is_pointer_v, T> exile_launch(struct exile_policy *policy, U fn, Args && ... args) { size_t mapsize = sizeof(T); T * sharedbuf = (T *) mmap(NULL, mapsize , PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); @@ -145,7 +145,7 @@ typename std::enable_if_t, T> exile_launch(struc template -typename std::enable_if_t && std::is_copy_constructible_v, T> +typename std::enable_if_t || (!std::is_trivially_copyable_v && std::is_copy_constructible_v), T> exile_launch(struct exile_policy *policy, const std::function &serializer, const std::function &deserializer, U fn, Args && ... args) { size_t mapsize = EXILE_MMAP_SIZE;