C 17 の新機能
C 17 の機能開発の完了に続いて、いくつかの新しい言語機能とライブラリの追加が導入されました。
言語機能:
-
テンプレートの使用方法の改善:
- クラス テンプレートのテンプレート引数の推論
- の表現テンプレートを使用した任意のタイプの値
-
Lambda の機能強化:
- constexpr ラムダの導入
- キャプチャ機能これでラムダ
-
属性:
- [[fallthrough]]、[[nodiscard] などの新しい属性の導入]、 そして[[maybe_unused]]
-
構文のクリーンアップ:
- インライン変数
- 簡素化された名前空間構文:名前空間A::B
- 非スロー式: throw() および noexcel(true)
-
制御フローの改善:
- 解凍用の構造化バインディング強化されたフロー制御のための値
- if (init; 条件) および switch (init; 条件)
- 一般化された範囲ベースの for ループ
- 条件付きコンパイル用の if constexpr
-
その他の注目すべきもの機能:
- 16 進浮動小数点リテラル
- オーバーアライメントされたデータに対する動的メモリ割り当て
- コピー省略の保証
- 固定順序-式の of-evaluation
- Direct列挙型のリスト初期化
- スレッドの進行状況の保証
ライブラリの追加:
データ型:
- std::variant (さまざまな型の値を表す場合)
- std::optional (オプションの値を表す場合)
- std::any (表す場合)コピー不可能な型を含む任意の型の値
- std::string_view (文字列を効率的に処理するため)参照
- 型情報なしでデータを表現するための std::byte
呼び出し可能処理:
- ジェネリックの std::invokeタプルベースの呼び出し可能な呼び出し
- std::apply呼び出し可能な呼び出し
- タプルからオブジェクトを構築するための std::make_from_tuple
- is_invocable と関連特性の紹介
ファイル システム ライブラリ:
新しいアルゴリズム:
- for_each_n、reduce、transform_reduce など
スレッド化機能強化:
- より効率的なマルチスレッド アクセスのための std::shared_mutex の導入
- アトミック保証とハードウェア干渉サイズ検出
ライブラリの基礎 TS追加:
- 検索アルゴリズム (alg.search)
- ポリモーフィック アロケーター (pmr)
コンテナの改善:
- 効率的なコンテナのための try_emplace と insert_or_assign挿入
- マップ、セット、および順序付けされていないコンテナのスプライシング
- 文字列の非 const data() アクセス
スマート ポインター:
- 修正と微調整unique_ptr
- 共有ポインタを管理するためのweak_from_thisの紹介
その他:
- 代わりにC11を使用C99 の標準ライブラリ用
- 予約済み将来の標準ライブラリ用の std[0-9] 名前空間
- さまざまなユーティリティ関数 (destroy、uninitialized_***)
- 特殊な数学関数の公開
- std:: の導入クランプ、std::gcd、std::lcm
- 例外std::uncaught_Exceptions などの処理の改善
- std::as_const、std::bool_constant、さまざまなテンプレート ユーティリティ
- std::chrono ライブラリの改善
- ブール演算子の導入(std::結合、std::分離、 std::negation)
- std 内での noexc の使用に関するルール
非推奨の機能:
- 一部の C ライブラリの削除、 、result_of、およびその他
以上がC 17 で導入された主要な言語とライブラリの機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。