#include #include struct S { S () : s (42) {} S (const S &x) : s (x.s) {}; ~S () {} int s; }; int main () { S s; s.s = 113; #pragma omp parallel num_threads(4) default(firstprivate) { if (s.s != 113) abort (); s.s = omp_get_thread_num (); #pragma omp barrier if (s.s != omp_get_thread_num ()) abort (); } #pragma omp parallel num_threads(4) default(private) { if (s.s != 42) abort (); s.s = omp_get_thread_num () + 13; #pragma omp barrier if (s.s != omp_get_thread_num () + 13) abort (); } }