https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87786
Bug ID: 87786 Summary: Failed to mangle sizeof...(ArgPack) with template-alias captured arguments Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: xecycle at gmail dot com Target Milestone: --- Reproducing code (at https://godbolt.org/z/dbqZu7): ``` #include <cstddef> double g(int); template <size_t X> struct M {}; template <class... T> using make_M = M<sizeof...(T)>; template <class... T> auto f(T&&... x) -> make_M<decltype(g(x))...> { using _noop = int[]; (void)_noop { ((void)x, 0)... }; return {}; } auto m = f(12, 34); ``` It fails to compile with versions >= 7. At first it looks like a regression; but it probably is not. It's more like an incomplete attempt (in 7.x) to fix a previous mangling bug. 6.x and earlier does compile, but the mangled output used "sz" instead of "sP"; gcc/cp/mangle.c on trunk actually contains a line `write_string ("sP");`, but seems it did not reach there in this example.