CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
141 lines
2.7 KiB
C++
141 lines
2.7 KiB
C++
// 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 <typename... Ts>
|
|
consteval int f(Ts... ts) {
|
|
return ([]<Ts a = 42>(){ return a;}, ...)();
|
|
}
|
|
|
|
static_assert(f(0, 42) == 42);
|
|
|
|
template <typename Ts>
|
|
int g(Ts ts) {
|
|
return ([]<Ts a = 42>(){ return a;}, ...)(); // expected-error {{pack expansion does not contain any unexpanded parameter packs}}
|
|
}
|
|
|
|
template <typename... Ts>
|
|
int h(Ts... ts) {
|
|
return ([]<Ts a = 42>(){ return a;})(); // expected-error {{expression contains unexpanded parameter pack 'Ts'}}
|
|
}
|
|
|
|
}
|
|
|
|
namespace GH63677 {
|
|
|
|
template<typename>
|
|
void f() {
|
|
[]<typename... Ts>() -> void {
|
|
[...us = Ts{}]{
|
|
(Ts(us), ...);
|
|
};
|
|
}.template operator()<int, int>();
|
|
}
|
|
|
|
template void f<int>();
|
|
|
|
template <class>
|
|
inline constexpr auto fun =
|
|
[]<class... Ts>(Ts... ts) {
|
|
return [... us = (Ts&&) ts]<class Fun>(Fun&& fn) mutable {
|
|
return static_cast<Fun&&>(fn)(static_cast<Ts&&>(us)...);
|
|
};
|
|
};
|
|
|
|
void f() {
|
|
[[maybe_unused]] auto s = fun<int>(1, 2, 3, 4);
|
|
}
|
|
|
|
}
|
|
|
|
namespace GH61460 {
|
|
|
|
template<typename... Ts>
|
|
void f1(Ts... ts);
|
|
|
|
template <typename... Ts> void g(Ts... p1s) {
|
|
(void)[&](auto... p2s) {
|
|
(
|
|
[&] {
|
|
p1s;
|
|
f1(p1s);
|
|
sizeof(p1s);
|
|
p2s;
|
|
},
|
|
...);
|
|
};
|
|
}
|
|
|
|
template <typename... Ts> void g2(Ts... p1s) {
|
|
(void)[&](auto... p2s) { [&] { p1s; p2s; }; }; // expected-error {{unexpanded parameter pack 'p2s'}}
|
|
}
|
|
|
|
void f1() { g(); }
|
|
|
|
} // namespace GH61460
|
|
|
|
namespace GH112352 {
|
|
|
|
template <class>
|
|
constexpr bool foo = false;
|
|
|
|
template <int>
|
|
constexpr bool bar = false;
|
|
|
|
template <template<class> class>
|
|
constexpr bool baz = false;
|
|
|
|
struct S {
|
|
template <typename... Types, int... Values> void foldExpr1() {
|
|
(void)[]<int... Is> {
|
|
([] {
|
|
Is;
|
|
// Propagate up the flag ContainsUnexpandedParameterPack from VarDecl.
|
|
S var(foo<Types>);
|
|
foo<Types>;
|
|
bar<Values>;
|
|
int a = Values;
|
|
} &&
|
|
...);
|
|
};
|
|
}
|
|
|
|
template <template<class> class... TTPs> void foldExpr2() {
|
|
(void)[]<int... Is> {
|
|
([] {
|
|
Is;
|
|
baz<TTPs>;
|
|
TTPs<int> D;
|
|
} && ...);
|
|
};
|
|
}
|
|
};
|
|
|
|
void use() {
|
|
S().foldExpr1();
|
|
S().foldExpr2();
|
|
}
|
|
|
|
} // namespace GH112352
|