3 #include <opals/fwd.hpp>
9 struct random_access_iterator_tag;
28 operator bool()
const noexcept;
62 template<
class ForX,
class ForBool>
63 using ForXOrBool =
typename std::conditional<!std::is_same<T, bool>::value, ForX, ForBool>::type;
65 template<
bool Const,
bool Forward>
74 using size_type = std::size_t;
75 using difference_type = std::ptrdiff_t;
76 using reference = ForXOrBool<T&, BoolReference>;
77 using const_reference = ForXOrBool<T const&, bool>;
78 using pointer = ForXOrBool<T*, iterator>;
79 using const_pointer = ForXOrBool<T const*, const_iterator>;
85 Vector(size_type n,
const T& value);
98 void assign(size_type count,
const T& value);
126 reference at(size_type pos);
127 const_reference at(size_type pos) const;
129 reference operator[](size_type n);
130 const_reference operator[](size_type n) const;
134 const_reference front() const;
135 const_reference back() const;
140 size_type size() const noexcept;
141 size_type max_size() const noexcept;
142 size_type capacity() const noexcept;
143 bool empty() const noexcept;
144 void shrink_to_fit();
145 void clear() noexcept;
146 void resize(size_type n, T value = T());
147 void reserve(size_type n);
152 void push_back(const T& val);
176 template<
bool Const,
bool Forward>
184 using ConstSel =
typename std::conditional<Const, U const, U>::type;
185 template<
class ForX,
class ForBool>
186 using ForXOrBool =
typename std::conditional<!std::is_same<T, bool>::value, ForX, ForBool>::type;
188 using iterator_category = std::random_access_iterator_tag;
189 using value_type = ConstSel<T>;
190 using difference_type = std::ptrdiff_t;
191 using reference =
typename std::conditional<Const, typename Vector::const_reference, typename Vector::reference>::type;
192 using pointer = ForXOrBool<ConstSel<value_type>*,
void>;
211 reference operator* ()
const;
212 pointer operator->()
const;
213 reference operator[](difference_type offset)
const;
222 Iterator& operator+=(difference_type offset);
223 Iterator operator+ (difference_type offset)
const;
224 Iterator& operator-=(difference_type offset);
225 Iterator operator- (difference_type offset)
const;