int foo () { int var = 42; [&var] () { #pragma omp target firstprivate(var) { var += 26; if (var != 42 + 26) __builtin_abort (); } } (); return var; } template struct A { A () : a(), b() { [&] () { #pragma omp target firstprivate (a) map (from: b) b = ++a; } (); } T a, b; }; int main () { if (foo () != 42) __builtin_abort (); A x; if (x.a != 0 || x.b != 1) __builtin_abort (); }