Loading AI tools
C++17の次期バージョンとされるC++の非公式名称 ウィキペディアから
C++20 は、プログラミング言語 C++ の標準規格 ISO/IEC 14882:2020 [1]の通称である[2]。C++17 の次のバージョンである。この規格は、2020年2月にプラハで開催された会議でWG21によって技術的に最終決定[3]され[4]、2020年9月4日に承認され、2020年12月に公開された。
C++20は、C++14やC++17と比べ新たな主要機能が追加されている[5]。以下は、C++20に受け入れられるか、C++20に含めることが検討されている変更の一部のリストである。[6] [要更新]
C++20では多くの新機能が導入された。次のリストは完全ではない可能性がある。
[=, this]
[11]operator <=>
による三方比較for
文内における追加変数の初期化[13]typename
の必要性が除去される[19][[no_unique_address]]
[20] 、[[likely]]
および[[unlikely]]
[21]explicit
、明示的修飾子がブール式に依存できるようにする[22]constexpr
:仮想関数[23]、共用体[24]、try および catch[25]、dynamic_cast および typeid[26]、std::pointer_traits[27]consteval
キーワードを使用した即時関数[28]using
[34]constinit
キーワード[35]std::make_shared
およびstd::allocate_shared
[37]std::atomic<shared_ptr<T>>
やstd::atomic<weak_ptr<T>>
)[38]std::to_address
[39]<chrono>
へのカレンダーとタイムゾーンの追加[40]std::span
(std::string_view
に類似するが、span
は参照シーケンスを変更可能である) [41]<version>
ヘッダー[42]std::bit_cast<>
。memcpy()
よりも冗長度が低く、コンパイラの内部を利用しやすくなっている[43]。std::map::contains
メソッド[47]concept
、constinit
[35]、consteval
、co_await
、co_return
、co_yield
、requires
(加えてexport
の意味の変更)、およびchar8_t
といった多くの新しいキーワード(および新規の「宇宙船演算子」operator <=>
)が追加された[50]。また、C++20以降、explicit
は式を取ることができるようになった[51]。volatile
キーワードのほとんどの用法は廃止予定となった[49]。
キーワードに加えて、import
やmodule
など、特別な意味を持つ識別子が新しく加わった。
C++20で新しく追加された属性:[[likely]]
、[[unlikely]]
、および[[no_unique_address]]
[52]。
2017年7月(トロント)にC++20ワーキングドラフトに適用された変更は次のとおりである:[53]
[=, this]
std::make_shared
およびstd::allocate_shared
2017年11月の秋の会議(アルバカーキ)でC++20ワーキングドラフトに適用された変更は次のとおりである:[54] [55]
operator <=>
を使用した三方比較for
ステートメント内の追加変数の初期化std::atomic<shared_ptr<T>>
やstd::atomic<weak_ptr<T>>
)std::to_address
2018年3月(ジャクソンビル)のC++20ワーキングドラフトに適用された変更は次のとおりである:[56]
typename
の必要性の除去[57][[no_unique_address]]
[58]、[[likely]]
および[[unlikely]]
[59]<chrono>
へのカレンダーとタイムゾーンの追加[60]std::span
(std::string_view
と類似するが、span
は参照されたシーケンスを変更可能である)[61]<version>
ヘッダ[62]2018年6月の夏の会議(Rapperswil)でC++20ワーキングドラフトに適用された変更は次のとおりである:[63]
memcpy()
より冗長性が低く、コンパイラの内部を利用する能力が高いオブジェクト表現のビットキャスト[66]explicit
[67]2018年11月の秋の会議(サンディエゴ)でC++20ワーキングドラフトに適用された変更は次のとおりである:
consteval
キーワードを使用した即時関数[70]2019年2月の冬の会議(コナ)でC++20ワーキングドラフトに適用された変更は次のとおりである:[75] [76]
2019年7月の夏の会議(ケルン)でC++20ワーキングドラフトに適用された変更は次のとおりである:[86] [87] [88]
constinit
キーワード-> Type
return-type-requirements の削除[97])volatile
を非推奨とした[49][[nodiscard]]
の効果[98]constexpr INVOKE
[105]std::atomic_ref<T>
[107]、std::atomic<std::shared_ptr<T>>
[108])<=>
演算子を標準ライブラリに追加[109]std::source_location
[116]std::string
[117]、std::vector
[118])std::stop_token
およびjoinされるスレッド(std::jthread
)[119]2019年11月の秋の会議(ベルファスト)でのNBコメントの解決中に適用された変更には以下を含む:[120][121][122]
operator==
から分離されたため、ユーザー定義のoperator==
許可しないという制限がなくなった[123]。これにより、クラスタイプのNTTPの配列メンバーも許可される。<compare>
がフリースタンディング実装で利用可能になった[125]std::span
のtypedefは、標準ライブラリの他の部分と一致するようにsize_type
からindex_type
に変更された[126]std::string_view
に対する範囲コンストラクタ(文字のイテレーターペアからのコンストラクタ)[128]、P1394R4:std::span<ref>
に対する範囲コンストラクタ[129]、P1870R1:forwarding-range<T>
が微妙すぎる[130])std::atomic<T>
の初期化が変更され、デフォルトおよびリスト初期化で動作するようになった[131]。std::latch
およびstd::barrier
は、新しいメンバ関数max()
を通じて実装がサポートするスレッドの最大数を報告できるようになった。std::weak_equality
とstd::strong_equality
は使用されなくなったため削除された<numeric>
内のアルゴリズムがconstexpr
となった。Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.