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