1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // 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 ();
- }
|