[clang] [Clang] Diagnose unexpanded packs for NTTP type constraints (PR #121296)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 30 03:44:29 PST 2024
================
@@ -305,3 +305,45 @@ static_assert(__is_same_as(_Three_way_comparison_result_with_tuple_like<tuple<in
static_assert(__is_same_as(_Three_way_comparison_result_with_tuple_like<tuple<int>, 0>::type, long));
}
+
+namespace GH88866 {
+
+template <typename...Ts> struct index_by;
+
+template <typename T, typename Indices>
+concept InitFunc = true;
+
+namespace Invalid {
+
+template <typename Indices, InitFunc<Indices> auto... init>
+struct LazyLitMatrix;
+
+template <
+ typename...Indices,
+ InitFunc<index_by<Indices>> auto... init
+ // expected-error at -1 {{type constraint contains unexpanded parameter pack 'Indices'}}
----------------
zyn0217 wrote:
Wow you're right, I was confused by the original case where there's no ellipsis in the parameter declaration.
https://godbolt.org/z/9jaazxEqY
(Fun fact that GCC accepts both w/ or w/o ellipsis, which doesn't seem right. We crash on both, sadly.)
https://github.com/llvm/llvm-project/pull/121296
More information about the cfe-commits
mailing list