45template <
size_t N>
class byte_array :
private internal::comparable<byte_array<N> > {
49 typedef uint8_t value_type;
50 typedef value_type* pointer;
51 typedef const value_type* const_pointer;
52 typedef value_type& reference;
53 typedef const value_type& const_reference;
54 typedef value_type* iterator;
55 typedef const value_type* const_iterator;
56 typedef std::size_t size_type;
57 typedef std::ptrdiff_t difference_type;
58 typedef std::reverse_iterator<iterator> reverse_iterator;
59 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
66 static size_t size() {
return N; }
70 value_type* begin() {
return bytes_; }
71 value_type* end() {
return bytes_+N; }
72 value_type& operator[](
size_t i) {
return bytes_[i]; }
74 const value_type* begin()
const {
return bytes_; }
75 const value_type* end()
const {
return bytes_+N; }
76 const value_type& operator[](
size_t i)
const {
return bytes_[i]; }
82 return std::equal(x.begin(), x.end(), y.begin());
86 return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
92 internal::print_hex(o, b.begin(), b.
size());