typedef union { __m128 stub; // sizeof(__m128) == 128 ; // 16 bytes float f[4];} float4; QVector<float4> vec; Q_ASSERT( ((uintptr_t)vec.data() & 0xF) == 0); // always zero
typedef union {
// aligned_32_char __declspec(align(32)) class aligned_32_char { public: aligned_32_char(char data = 0) : data_(data) {} operator char() { return data_; } ... private: char data_; }; QVector<aligned_32_char> v(1); std::cout << (void*)&v[0] << std::endl; char elem = v[0]; // operator char() v[0] = 7; // non-explicit ctor
v[1] -> points to 17-th byte, вообщем, таже песня, неудобно.
// выравнивание по 16 байтной границеalignas(16) char[100];