Я пытаюсь использовать openmp для многопоточного цикла через std:: set. Когда я пишу следующий код -
    #pragma omp parallel for
    for (std::set<A>::const_iterator i = s.begin(); i != s.end(); ++i) {
            const A a = *i;
            operate(a);
    }
Я получаю эту ошибку:
error: invalid type for iteration variable 'i'
error: invalid controlling predicate
error: invalid increment expression.
  Есть ли другой правильный способ итерации через std-контейнеры с использованием openmp?
Я знаю, что могу использовать int i и перебирать с 0 в s.size() и итератор или operator[] в тело цикла, но это выглядит намного менее чистым.
