diff --git a/clang/test/SemaTemplate/concepts-out-of-line-def.cpp b/clang/test/SemaTemplate/concepts-out-of-line-def.cpp index 333187b0d74ad6..5450d105a6f54a 100644 --- a/clang/test/SemaTemplate/concepts-out-of-line-def.cpp +++ b/clang/test/SemaTemplate/concepts-out-of-line-def.cpp @@ -622,3 +622,47 @@ void A::method(Ts&... ts) } {} } + +namespace GH63782 { +// GH63782 was also fixed by PR #80594, so let's add a test for it. + +template +constexpr bool All = (Vals && ...); + +template +class Class { + template + requires All + void Foo(); +}; + +template +template +requires All +void Class::Foo() { +}; + +} // namespace GH63782 + +namespace eve { +// Reduced from the "eve" project + +template +struct tuple { + template requires(I0 <= sizeof...(Ts)) + constexpr auto split(); +}; + +template +template +requires(I0 <= sizeof...(Ts)) +constexpr auto tuple::split(){ + return 0; +} + +int foo() { + tuple x; + return x.split<0>(); +} + +} // namespace eve