@@ -37,26 +37,30 @@ namespace system {
3737
3838template <size_t Offset = zero, typename Byte, size_t Size, typename Integral,
3939 if_one_byte<Byte> = true ,
40- if_integral_integer<Integral> = true >
40+ if_integral_integer<Integral> = true ,
41+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
4142constexpr void to_big (std_array<Byte, Size>& data, Integral value) NOEXCEPT;
4243
4344template <size_t Offset = zero, typename Byte, size_t Size, typename Integral,
4445 if_one_byte<Byte> = true ,
45- if_integral_integer<Integral> = true >
46+ if_integral_integer<Integral> = true ,
47+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
4648constexpr void to_little (std_array<Byte, Size>& data, Integral value) NOEXCEPT;
4749
4850// / from_big/from_little (by reference, implicit, offsettable).
4951// / ---------------------------------------------------------------------------
5052
5153template <size_t Offset = zero, typename Integral, typename Byte, size_t Size,
5254 if_one_byte<Byte> = true ,
53- if_integral_integer<Integral> = true >
55+ if_integral_integer<Integral> = true ,
56+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
5457constexpr void from_big (Integral& value,
5558 const std_array<Byte, Size>& data) NOEXCEPT;
5659
5760template <size_t Offset = zero, typename Integral, typename Byte, size_t Size,
5861 if_one_byte<Byte> = true ,
59- if_integral_integer<Integral> = true >
62+ if_integral_integer<Integral> = true ,
63+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
6064constexpr void from_little (Integral& value,
6165 const std_array<Byte, Size>& data) NOEXCEPT;
6266
@@ -65,12 +69,14 @@ constexpr void from_little(Integral& value,
6569
6670template <typename Integral, size_t Offset = zero, typename Byte, size_t Size,
6771 if_one_byte<Byte> = true ,
68- if_integral_integer<Integral> = true >
72+ if_integral_integer<Integral> = true ,
73+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
6974constexpr Integral from_big (const std_array<Byte, Size>& data) NOEXCEPT;
7075
7176template <typename Integral, size_t Offset = zero, typename Byte, size_t Size,
7277 if_one_byte<Byte> = true ,
73- if_integral_integer<Integral> = true >
78+ if_integral_integer<Integral> = true ,
79+ if_not_lesser<safe_subtract(Size, Offset), sizeof (Integral)> = true >
7480constexpr Integral from_little (const std_array<Byte, Size>& data) NOEXCEPT;
7581
7682// / to_big/to_little (by value, implicit).
0 commit comments