C++26 deprecates ellipsis parameters declared without a preceding comma (e.g., `void f(int...)`) in favor of the C-compatible form with a comma (`void f(int, ...)`). The change, proposed in P3176R1, addresses confusion with template parameter packs introduced in C++11, where `(T...)` looks like a pack expansion but is actually a single parameter followed by an ellipsis. The deprecation is purely additive—no code becomes ill-formed—and any affected declarations can be mechanically fixed by inserting a comma. It also unblocks future language proposals that would repurpose the comma-less syntax.
Table of contents
The problemWhy is this confusing?The curious case of six dotsWhat’s being deprecated?ImpactConclusionConnect deeperSort: