Я пытаюсь использовать __m128i в качестве типа значения вектора с выравниванием по кэшу в GCC, и я получаю следующую ошибку:
/ usr / include / tbb / cache_aligned_allocator.h: 105: 32: ошибка: запрос для члена '~ tbb :: cache_aligned_allocator <__ vector (2) long long int> :: value_type' в '* p', что неклассового типа 'tbb :: cache_aligned_allocator <__ vector (2) long long int> :: value_type {aka __vector (2) long long int}'
Компилятор отслеживает его до следующей строки в tbb / cache_aligned_allocator.h:
void destroy( pointer p ) {p->~value_type();}
Вот код, вызывающий ошибку компилятора:
#include <vector>
#include <emmintrin.h>
#include <tbb/cache_aligned_allocator.h>
int main()
{
std::vector<int, tbb::cache_aligned_allocator<int> > success;
std::vector<__m128i, tbb::cache_aligned_allocator<__m128i> > failure;
return 0;
}
Согласно версиям Debian, моя версия GCC 4.6.1-2, а моя версия TBB 3.0 + r147-1.
Это ошибка в Threading Building Blocks, или я что-то неправильно использую?