Использование директивы OpenMP threadprivate для статических экземпляров типов C ++ STL

Рассмотрим следующий фрагмент:

#include <map>

class A {
    static std::map<int,int> theMap;
#pragma omp threadprivate(theMap)
};

std::map<int,int> A::theMap;

Компиляция с OpenMP завершается неудачно со следующим сообщением об ошибке:

$ g++ -fopenmp -c main.cpp 
main.cpp:5:34: error: ‘threadprivate’ ‘A::theMap’ has incomplete type

Я этого не понимаю. Я могу скомпилировать без директивы #pragma , что должно означать, что std :: map не является , а не неполным. Я также могу скомпилировать, если карта является примитивным типом (double, int ...).

Как сделать глобальный статический std :: map threadprivate ?

6
задан Arek' Fu 8 November 2011 в 13:26
поделиться