Я понимаю, что сокращение применимо только для типов POD в С++. Что бы вы сделали для реализации сокращения для накопителя сложного типа?
complex<double> x(0.0,0.0), y(1.0,1.0);
#pragma omp parallel for reduction(+:x)
for(int i=0; i<5; i++)
{
x += y;
}
(отметив, что я, возможно, оставил некоторый синтаксис). Кажется очевидным решением было бы разделить реальные и мнимые компоненты на временные двойники, а затем накапливать их. Наверное, я ищу элегантность, и это кажется... менее красивым. Это будет типичный подход здесь?