summaryrefslogtreecommitdiffhomepage
path: root/serialize/packbits-write.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'serialize/packbits-write.hpp')
-rw-r--r--serialize/packbits-write.hpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/serialize/packbits-write.hpp b/serialize/packbits-write.hpp
index ca18cfbb..234b1632 100644
--- a/serialize/packbits-write.hpp
+++ b/serialize/packbits-write.hpp
@@ -12,9 +12,9 @@ template<std::unsigned_integral T, size_t CAPACITY, size_t LEFT>
struct output
{
static_assert(std::is_fundamental_v<T>);
- static_assert(CAPACITY > 0);
- static_assert(CAPACITY <= sizeof(T)*8);
+ static_assert(LEFT >= 0);
static_assert(LEFT <= CAPACITY);
+ static_assert(CAPACITY <= sizeof(T)*8);
static constexpr size_t Capacity = CAPACITY, Left = LEFT;
T value{0};
};
@@ -23,6 +23,7 @@ template<std::unsigned_integral T, size_t LENGTH>
struct output_field
{
static_assert(LENGTH > 0);
+ static_assert(LENGTH <= sizeof(T)*8);
static constexpr size_t Length = LENGTH;
T value;
};
@@ -37,6 +38,7 @@ constexpr CORRADE_ALWAYS_INLINE T write_(const Tuple& tuple, output<T, Capacity,
static_assert(Left > 0);
static_assert(Capacity <= sizeof(T)*8);
static_assert(Left <= Capacity);
+ static_assert(I < std::tuple_size_v<Tuple>, "too few tuple elements");
static_assert(is_output_field<std::decay_t<decltype(std::get<I>(tuple))>>{});
constexpr size_t N = std::tuple_element_t<I, Tuple>::Length;
static_assert(N <= Left);