@@ -1004,12 +1004,12 @@ class stable_vector
1004
1004
}
1005
1005
1006
1006
auto operator [](size_t idx) -> T& {
1007
- testing .enforce (idx < size ());
1007
+ bounds_safety .enforce (idx < size ());
1008
1008
return data[idx / PageSize][idx % PageSize];
1009
1009
}
1010
1010
1011
1011
auto operator [](size_t idx) const -> T const & {
1012
- testing .enforce (idx < size ());
1012
+ bounds_safety .enforce (idx < size ());
1013
1013
return data[idx / PageSize][idx % PageSize];
1014
1014
}
1015
1015
@@ -1042,14 +1042,16 @@ class stable_vector
1042
1042
// -------------------------------------------------------------------
1043
1043
// Debug interface
1044
1044
//
1045
- auto debug_print () -> void {
1046
- std::cout << " stable_vector:\n " ;
1045
+ auto debug_print (std::ostream& o) const
1046
+ -> void
1047
+ {
1048
+ o << " stable_vector:\n " ;
1047
1049
for (auto i = 0 ; auto & chunk : data) {
1048
- std::cout << " -- page " << i++ << " --\n " ;
1050
+ o << " -- page " << i++ << " --\n " ;
1049
1051
for (auto e : chunk) {
1050
- std::cout << e << ' ' ;
1052
+ o << e << ' ' ;
1051
1053
}
1052
- std::cout << " \n " ;
1054
+ o << " \n " ;
1053
1055
}
1054
1056
}
1055
1057
@@ -1067,12 +1069,12 @@ class stable_vector
1067
1069
using iterator_category = std::random_access_iterator_tag;
1068
1070
1069
1071
iterator ( stable_vector* v_ = nullptr , size_t pos_ = 0 ) : v{v_}, pos{pos_} { }
1070
- auto operator ++ () -> void { if (pos < v->size ()) { ++pos; } }
1071
- auto operator -- () -> void { if (pos > 0 ) { --pos; } }
1072
- auto operator += (size_t off) -> void { if (pos + off < v->size ()) { pos += off; } else { pos = v->size (); } }
1073
- auto operator -= (size_t off) -> void { if (pos - off > 0 ) { pos -= off; } else { pos = 0 ; } }
1074
- auto operator * () -> T& { return (*v)[pos ]; }
1075
- auto operator -> () -> T* { return &(*v)[pos ]; }
1072
+ auto operator ++ () -> iterator { if (pos < v->size ()) { ++pos; } return * this ; }
1073
+ auto operator -- () -> iterator { if (pos > 0 ) { --pos; } return * this ; }
1074
+ auto operator += (size_t off) -> iterator { if (pos + off < v->size ()) { pos += off; } else { pos = v->size (); } return * this ; }
1075
+ auto operator -= (size_t off) -> iterator { if (pos - off > 0 ) { pos -= off; } else { pos = 0 ; } return * this ; }
1076
+ auto operator * () const -> T& { return (*v)[pos ]; }
1077
+ auto operator -> () const -> T* { return &(*v)[pos ]; }
1076
1078
auto operator [] (size_t off) -> T& { return (*v)[pos + off]; }
1077
1079
auto operator + (size_t off) -> iterator { auto i = *this ; i += off; return i; }
1078
1080
auto operator - (size_t off) -> iterator { auto i = *this ; i -= off; return i; }
@@ -1091,12 +1093,12 @@ class stable_vector
1091
1093
using iterator_category = std::random_access_iterator_tag;
1092
1094
1093
1095
const_iterator ( stable_vector const * v_ = nullptr , size_t pos_ = 0 ) : v{v_}, pos{pos_} { }
1094
- auto operator ++ () -> void { if (pos < v->size ()) { ++pos; } }
1095
- auto operator -- () -> void { if (pos > 0 ) { --pos; } }
1096
- auto operator += (size_t off) -> void { if (pos + off < v->size ()) { pos += off; } else { pos = v->size (); } }
1097
- auto operator -= (size_t off) -> void { if (pos - off > 0 ) { pos -= off; } else { pos = 0 ; } }
1098
- auto operator * () -> T const & { return (*v)[pos ]; }
1099
- auto operator -> () -> T const * { return &(*v)[pos ]; }
1096
+ auto operator ++ () -> const_iterator { if (pos < v->size ()) { ++pos; } return * this ; }
1097
+ auto operator -- () -> const_iterator { if (pos > 0 ) { --pos; } return * this ; }
1098
+ auto operator += (size_t off) -> const_iterator { if (pos + off < v->size ()) { pos += off; } else { pos = v->size (); } return * this ; }
1099
+ auto operator -= (size_t off) -> const_iterator { if (pos - off > 0 ) { pos -= off; } else { pos = 0 ; } return * this ; }
1100
+ auto operator * () const -> T const & { return (*v)[pos ]; }
1101
+ auto operator -> () const -> T const * { return &(*v)[pos ]; }
1100
1102
auto operator [] (size_t off) -> T const & { return (*v)[pos + off]; }
1101
1103
auto operator + (size_t off) -> const_iterator { auto i = *this ; i += off; return i; }
1102
1104
auto operator - (size_t off) -> const_iterator { auto i = *this ; i -= off; return i; }
0 commit comments