bytes and sstring are distinct types, since their internal buffers are of different length, but bytes_view is an alias of sstring_view, which makes it possible of objects of different types to leak across the abstraction boundary. Fix this by making bytes a basic_sstring<int8_t, ...> instead of using char. int8_t is a 'signed char', which is a distinct type from char, so now bytes_view is a distinct type from sstring_view. uint8_t would have been an even better choice, but that diverges from Origin and would have required an audit.
981 B
981 B