C++26: The Oxford Variadic Comma
2 months ago
- #C++26
- #programming
- #language-features
- C++26弃用了前面没有逗号的省略号参数(P3176R1提案)。
- 这一变更提升了与C语言的兼容性,减少了与模板参数包的混淆,并为未来特性保留了设计空间。
- 当前C++同时允许`void foo(int, ...)`(兼容C)和`void foo(int...)`(仅C++),但后者现被弃用。
- 无逗号形式曾引发混淆,特别是在模板参数包和简写函数模板场景中。
- 该弃用影响`void f(int...)`和`void g(auto args...)`等语法,建议改用`void f(int, ...)`形式。
- 独立的省略号参数(`void f(...)`)仍保持有效。
- 此次变更是弃用而非移除,便于自动化修复。
- 此举为未来特性(如同质可变函数参数)的提案扫清了道路。