// RUN: %clang_cc1 -std=c++20 -Wno-unused-value -fsyntax-only -verify %s namespace GH49266 { struct X { X() = default; X(X const&) = delete; // expected-note {{'X' has been explicitly marked deleted here}} }; void take_by_copy(auto &...args) { [...args = args] {}(); // expected-error {{call to deleted constructor}} } void take_by_ref(auto &...args) { [&...args = args] {}(); // args is passed by reference and not copied. } void foo() { X x; take_by_copy(x); // expected-note {{in instantiation of function template specialization}} take_by_ref(x); } } namespace GH48937 { template consteval int f(Ts... ts) { return ([](){ return a;}, ...)(); } static_assert(f(0, 42) == 42); template int g(Ts ts) { return ([](){ return a;}, ...)(); // expected-error {{pack expansion does not contain any unexpanded parameter packs}} } template int h(Ts... ts) { return ([](){ return a;})(); // expected-error {{expression contains unexpanded parameter pack 'Ts'}} } } namespace GH63677 { template void f() { []() -> void { [...us = Ts{}]{ (Ts(us), ...); }; }.template operator()(); } template void f(); template inline constexpr auto fun = [](Ts... ts) { return [... us = (Ts&&) ts](Fun&& fn) mutable { return static_cast(fn)(static_cast(us)...); }; }; void f() { [[maybe_unused]] auto s = fun(1, 2, 3, 4); } } namespace GH61460 { template void f1(Ts... ts); template void g(Ts... p1s) { (void)[&](auto... p2s) { ( [&] { p1s; f1(p1s); sizeof(p1s); p2s; }, ...); }; } template void g2(Ts... p1s) { (void)[&](auto... p2s) { [&] { p1s; p2s; }; }; // expected-error {{unexpanded parameter pack 'p2s'}} } void f1() { g(); } } // namespace GH61460 namespace GH112352 { template constexpr bool foo = false; template constexpr bool bar = false; template class> constexpr bool baz = false; struct S { template void foldExpr1() { (void)[] { ([] { Is; // Propagate up the flag ContainsUnexpandedParameterPack from VarDecl. S var(foo); foo; bar; int a = Values; } && ...); }; } template class... TTPs> void foldExpr2() { (void)[] { ([] { Is; baz; TTPs D; } && ...); }; } }; void use() { S().foldExpr1(); S().foldExpr2(); } } // namespace GH112352