41 Basic_list(Basic_list
const &) =
delete;
42 void operator = (Basic_list
const &) =
delete;
45 typedef typename POLICY::Value_type Value_type;
46 typedef typename POLICY::Const_value_type Const_value_type;
51 typedef typename POLICY::Type Internal_type;
54 typedef typename POLICY::Value_type value_type;
55 typedef typename POLICY::Value_type Value_type;
57 Value_type operator * ()
const {
return static_cast<Value_type
>(*_c); }
58 Value_type operator -> ()
const {
return static_cast<Value_type
>(*_c); }
59 Iterator operator ++ () { _c = POLICY::next(_c);
return *
this; }
61 friend bool operator == (Iterator
const &lhs, Iterator
const &rhs)
62 {
return *lhs._c == *rhs._c; }
63 friend bool operator != (Iterator
const &lhs, Iterator
const &rhs)
64 {
return *lhs._c != *rhs._c; }
66 Iterator() : _c(__end()) {}
69 friend class Basic_list;
70 static Internal_type __end()
72 union X { Internal_type l;
void *
const *v; } z;
73 z.v = &Bits::List_iterator_end_ptr<void>::_end;
77 explicit Iterator(Internal_type i) : _c(i) {}
85 typedef typename POLICY::Const_type Internal_type;
88 typedef typename POLICY::Value_type value_type;
89 typedef typename POLICY::Value_type Value_type;
91 Value_type operator * ()
const {
return static_cast<Value_type
>(_c); }
92 Value_type operator -> ()
const {
return static_cast<Value_type
>(_c); }
93 Const_iterator operator ++ () { _c = POLICY::next(_c);
return *
this; }
95 friend bool operator == (Const_iterator
const &lhs, Const_iterator
const &rhs)
96 {
return lhs._c == rhs._c; }
97 friend bool operator != (Const_iterator
const &lhs, Const_iterator
const &rhs)
98 {
return lhs._c != rhs._c; }
101 Const_iterator(Iterator
const &o) : _c(*o) {}
104 friend class Basic_list;
106 explicit Const_iterator(Internal_type i) : _c(i) {}
112 explicit Basic_list(
bool) {}
113 constexpr Basic_list() :
_f(
nullptr) {}
115 Basic_list(Basic_list &&o) :
_f(o._f)
120 Basic_list &operator = (Basic_list &&o) &
134 Value_type
front()
const {
return static_cast<Value_type
>(
_f); }
146 Const_iterator
begin()
const {
return Const_iterator(
_f); }
154 static Const_iterator
iter(Const_value_type c) {
return Const_iterator(c); }
156 Const_iterator
end()
const {
return Const_iterator(
nullptr); }
158 Iterator
end() {
return Iterator(); }
161 static typename POLICY::Type __get_internal(Iterator
const &i) {
return i._c; }
162 static Iterator __iter(
typename POLICY::Type c) {
return Iterator(c); }
165 typename POLICY::Head_type
_f;