Q_REQUIRED_RESULT static QTypedArrayData *allocate(size_t capacity, AllocationOptions options = Default) { Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData)); return static_cast<QTypedArrayData *>(QArrayData::allocate(sizeof(T), Q_ALIGNOF(AlignmentDummy), capacity, options)); }
class AlignmentDummy { QArrayData header; T data; };
class alignas(256) CacheLine { public: CacheLine(char data = 0) : data_(data) {} operator char() { return data_; } private: char data_; }; QVector<CacheLine> v; v.push_back({}); qDebug() << (void*)&v.front(); // выровнен на 256 байт
template <typename T> class MyVector : protected QVector<T> {public: T& operator[](int index) { return reinterpret_cast<char*>(QVector<T>::data())[index]; } ... и так далее для всего, ... итераторов};