diff --git a/Framework/Foundation/include/Framework/Endian.h b/Framework/Foundation/include/Framework/Endian.h index a8fee915ee340..5b69591030249 100644 --- a/Framework/Foundation/include/Framework/Endian.h +++ b/Framework/Foundation/include/Framework/Endian.h @@ -33,24 +33,20 @@ #define O2_BIG_ENDIAN __BIG_ENDIAN #define O2_LITTLE_ENDIAN __LITTLE_ENDIAN - template - requires std::same_as -inline uint16_t doSwap(uint16_t x) +inline uint16_t doSwap(std::same_as auto x) { return swap16_(x); } template - requires std::same_as -inline uint32_t doSwap(uint32_t x) +inline uint32_t doSwap(std::same_as auto x) { return swap32_(x); } template - requires std::same_as -inline uint64_t doSwap(uint64_t x) +inline uint64_t doSwap(std::same_as auto x) { return swap64_(x); } diff --git a/Framework/Foundation/include/Framework/Pack.h b/Framework/Foundation/include/Framework/Pack.h index 2355ffed6b35b..4fcf796a3ec62 100644 --- a/Framework/Foundation/include/Framework/Pack.h +++ b/Framework/Foundation/include/Framework/Pack.h @@ -114,42 +114,43 @@ consteval auto prune_voids_pack(Result result, pack<>) return result; } +template +concept void_pack_element = std::is_void_v; + +template +concept nonvoid_pack_element = !void_pack_element; + // The first one is non void, but one of the others is void -template - requires(!std::is_void_v) +template consteval auto prune_voids_pack(pack result, pack) { return prune_voids_pack(pack{}, pack{}); } // The first one is void -template - requires(std::is_void_v) +template consteval auto prune_voids_pack(pack result, pack) { return prune_voids_pack(pack{}, pack{}); } // The first one is non void, but one of the others is void -template - requires(!std::is_void_v && !std::is_void_v) +template consteval auto prune_voids_pack(pack result, pack) { return prune_voids_pack(pack{}, pack{}); } // Eats 4 types at the time -template - requires(!std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v) +template consteval auto prune_voids_pack(pack result, pack) { return prune_voids_pack(pack{}, pack{}); } // Eats 8 types at the time -template - requires(!std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v && !std::is_void_v) +template consteval auto prune_voids_pack(pack result, pack) { return prune_voids_pack(pack{}, pack{});