inline bool operator>(const const_iterator& other) const { return i > other.i; }
inline bool operator>=(const const_iterator& other) const { return i >= other.i; }
inline const_iterator &operator++() { ++i; return *this; }
- inline const_iterator operator++(int) { T *n = i; ++i; return n; }
+ inline const_iterator operator++(int) { const T *n = i; ++i; return n; }
inline const_iterator &operator--() { i--; return *this; }
- inline const_iterator operator--(int) { T *n = i; i--; return n; }
+ inline const_iterator operator--(int) { const T *n = i; i--; return n; }
inline const_iterator &operator+=(int j) { i+=j; return *this; }
inline const_iterator &operator-=(int j) { i-=j; return *this; }
inline const_iterator operator+(int j) const { return const_iterator(i+j); }
void realloc(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default);
void free(Data *d);
void defaultConstruct(T *from, T *to);
- void copyConstruct(T *srcFrom, T *srcTo, T *dstFrom);
+ void copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom);
void destruct(T *from, T *to);
class AlignmentDummy { Data header; T array[1]; };
#endif
template <typename T>
-void QVector<T>::copyConstruct(T *srcFrom, T *srcTo, T *dstFrom)
+void QVector<T>::copyConstruct(const T *srcFrom, const T *srcTo, T *dstFrom)
{
if (QTypeInfo<T>::isComplex) {
while (srcFrom != srcTo)
template <typename T>
QVector<T>::QVector(std::initializer_list<T> args)
{
- d = malloc(int(args.size()));
+ d = Data::allocate(args.size());
// std::initializer_list<T>::iterator is guaranteed to be
// const T* ([support.initlist]/1), so can be memcpy'ed away from by copyConstruct
copyConstruct(args.begin(), args.end(), d->begin());
iterator begin() { detach(); return d->begin(); }
iterator end() { detach(); return d->end(); }
- const_iterator begin() const { return d->begin(); }
- const_iterator end() const { return d->end(); }
+ const_iterator begin() const { return d->constBegin(); }
+ const_iterator end() const { return d->constEnd(); }
const_iterator constBegin() const { return begin(); }
const_iterator constEnd() const { return end(); }