|  | // PR c++/58706 | 
|  | // { dg-do run } | 
|  | // { dg-options "-std=c++11" } | 
|  |  | 
|  | template <typename T> | 
|  | T | 
|  | foo () | 
|  | { | 
|  | T n = T (); | 
|  | #pragma omp parallel for reduction (+: n) | 
|  | for (T i = [](){ return 3; }(); i < 10; ++i) | 
|  | n++; | 
|  | return n; | 
|  | } | 
|  |  | 
|  | template <typename T> | 
|  | T | 
|  | bar () | 
|  | { | 
|  | T n = T (); | 
|  | #pragma omp parallel for reduction (+: n) | 
|  | for (T i = [](){ return 1; }() + [](){ return 4; }(); i < 10; ++i) | 
|  | n++; | 
|  | return n; | 
|  | } | 
|  |  | 
|  | template <typename T> | 
|  | T | 
|  | baz () | 
|  | { | 
|  | T n = T (); | 
|  | #pragma omp parallel for reduction (+: n) | 
|  | for (T i = T (); i < [](){ return 7; }() + [](){ return 11; }(); i += [](){ return 3; }() - [](){ return 1; }()) | 
|  | n++; | 
|  | return n; | 
|  | } | 
|  |  | 
|  | int | 
|  | main () | 
|  | { | 
|  | if (foo <int> () != 7 || foo <long long> () != 7) | 
|  | __builtin_abort (); | 
|  | if (bar <int> () != 5 || bar <char> () != 5) | 
|  | __builtin_abort (); | 
|  | if (baz <int> () != 9 || baz <long long> () != 9) | 
|  | __builtin_abort (); | 
|  | } |