// PR c++/31598 // { dg-do compile } // // Copyright (C) 2007 Free Software Foundation, Inc. // Contributed by Theodore.Papadopoulo // 16 Apr 2007 int i; template struct A { A() {} }; template struct C { C() { i++; } C(const C &) { i += 2; } }; struct D { D() {} }; struct M { typedef double E; }; template struct R { R() { typedef A B; B b; #pragma omp parallel for firstprivate(b) schedule(guided) for (int t = 0; t < 10; ++t) ; } }; template struct S { S() { typedef C B; B b; #pragma omp parallel for firstprivate(b) for (int t = 0; t < 10; ++t) ; } }; struct U { U() { D b; #pragma omp parallel for firstprivate(b) for (int t = 0; t < 10; ++t) ; } }; int main () { R r; S s; U u; return 0; }