@@ -67,22 +67,20 @@ template <packer P> struct builder<defn::catalog_msg_t, P> {
67
67
template <auto Level, typename ... Ts>
68
68
static auto build (string_id id, module_id m, Ts... args) {
69
69
using namespace msg ;
70
- if constexpr ((0 + ... + sizeof (Ts)) <= sizeof (std::uint32_t ) * 2 ) {
70
+ constexpr auto payload_size =
71
+ (sizeof (id) + ... + sizeof (typename P::template pack_as_t <Ts>));
72
+ if constexpr (payload_size <= sizeof (uint32_t ) * 3 ) {
71
73
constexpr auto header_size =
72
74
defn::catalog_msg_t ::size<std::uint32_t >::value;
73
- constexpr auto payload_size =
74
- stdx::sized8{(sizeof (id) + ... +
75
- sizeof (typename P::template pack_as_t <Ts>))}
76
- .in <std::uint32_t >();
77
75
using storage_t =
78
- std::array<std::uint32_t , header_size + payload_size>;
76
+ std::array<std::uint32_t ,
77
+ header_size +
78
+ stdx::sized8{payload_size}.in <std::uint32_t >()>;
79
79
return catalog_builder<storage_t , P>{}.template build <Level>(
80
80
id, m, args...);
81
81
} else {
82
82
constexpr auto header_size =
83
83
defn::catalog_msg_t ::size<std::uint8_t >::value;
84
- constexpr auto payload_size =
85
- (sizeof (id) + ... + sizeof (typename P::template pack_as_t <Ts>));
86
84
using storage_t =
87
85
std::array<std::uint8_t , header_size + payload_size>;
88
86
return catalog_builder<storage_t , P>{}.template build <Level>(
0 commit comments