| // { dg-do compile { target c++11 } } | |
| // { dg-require-gthreads "" } | |
| // PR libstdc++/106695 | |
| // Explicit copy constructor does not work for a parameter passed via std::async | |
| #include <future> | |
| struct A { | |
| A() = default; | |
| explicit A(const A&) = default; | |
| }; | |
| void func(const A&) { } | |
| void | |
| test_async() | |
| { | |
| (void) std::async(std::launch::async, func, A{}); | |
| (void) std::async(std::launch::deferred, func, A{}); | |
| (void) std::async(func, A{}); | |
| } | |
| void | |
| test_task() | |
| { | |
| std::packaged_task<void(const A&)> task(func); | |
| task(A{}); | |
| } |