最終更新日時(UTC):
が更新

履歴 編集

先行するカンマのない省略記号を非推奨化 [P3176R0](C++26)

このページはC++26に採用される見込みの言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

概要

C++26では、カンマ後ではない「...」の使用を非推奨化する。

template <class... Ts>
void a(Ts...);       // OK, 関数テンプレートのパラメータパック

void b(auto...);     // OK, 関数テンプレートのパラメータパック

void c(int, ...);    // OK, Cとの互換性もある
void d(...);         // OK, Cとの互換性もある

void e(int...);      // C++23:OK, C++26:非推奨, C17:不適格
void f(int x...);    // C++23:OK, C++26:非推奨, C17:不適格

void g(int... args); // 不適格、あいまい

この構文は、C言語 (C89) の互換性としてC++98で導入されたが、C17では不適格となっている。C言語との互換性としてこの構文を維持する必要がなくなったため、非推奨となった。

参照