1 // PR c++/58706 2 // { dg-do run } 3 // { dg-options "-std=c++11" } 4 5 template <typename T> 6 T foo()7foo () 8 { 9 T n = T (); 10 #pragma omp parallel for reduction (+: n) 11 for (T i = [](){ return 3; }(); i < 10; ++i) 12 n++; 13 return n; 14 } 15 16 template <typename T> 17 T bar()18bar () 19 { 20 T n = T (); 21 #pragma omp parallel for reduction (+: n) 22 for (T i = [](){ return 1; }() + [](){ return 4; }(); i < 10; ++i) 23 n++; 24 return n; 25 } 26 27 template <typename T> 28 T baz()29baz () 30 { 31 T n = T (); 32 #pragma omp parallel for reduction (+: n) 33 for (T i = T (); i < [](){ return 7; }() + [](){ return 11; }(); i += [](){ return 3; }() - [](){ return 1; }()) 34 n++; 35 return n; 36 } 37 38 int main()39main () 40 { 41 if (foo <int> () != 7 || foo <long long> () != 7) 42 __builtin_abort (); 43 if (bar <int> () != 5 || bar <char> () != 5) 44 __builtin_abort (); 45 if (baz <int> () != 9 || baz <long long> () != 9) 46 __builtin_abort (); 47 } 48