ホームページ > バックエンド開発 > C++ > C 17 で導入された主な新機能と拡張機能は何ですか?

C 17 で導入された主な新機能と拡張機能は何ですか?

Barbara Streisand
リリース: 2024-12-11 17:17:11
オリジナル
663 人が閲覧しました

What are the Key New Features and Enhancements Introduced in C  17?

C 17 の新機能は何ですか?

C 17 では、次のようなさまざまな新機能と言語改善が導入されています。

  • 言語機能:

    • クラス テンプレートのテンプレート引数推定
    • テンプレート 型以外のテンプレート引数の値を表す type
    • 型以外のテンプレート引数を修正
    • テンプレート テンプレートのサポート
    • 拡張折りたたみ式と ... 式
    • 整数としての auto x{8}
    • ... との併用による最新化lists
    • Constexpr lambdas
    • ラムダでこれをキャプチャする
    • [[fallthrough]]、[[nodiscard]]、[[maybe_unused]] などの属性
    • 名前空間の属性と列挙子
    • 属性の名前空間の繰り返しを避けるために属性内で使用する
    • 認識できない非標準属性を無視するようコンパイラに要求する
    • インライン変数
    • 名前空間の別名(例: 名前空間A::B)
    • 単純な static_assert(expression);文字列なし
    • no throw を削除し、throw() と noexcel(true) に置き換えます
  • よりクリーンなマルチリターンとフロー制御:

    • 簡素化するための構造化バインディング複数の戻り値
    • 拡張 if ステートメントと switch ステートメントの if (init;condition) および switch (init;condition)
    • センチネルとカスタム イテレータの範囲ベースの for ループの一般化
    • ほぼ汎用の if constexprコード
  • その他:

    • 16 進浮動小数点リテラル
    • オーバーアライメントのための動的メモリ割り当てデータ
    • 保証されたコピー省略
    • 式の固定評価順序
    • 列挙型の直接リスト初期化
    • 前方進行保証 (FPG)
    • 文字リテラル u8'U '、u8'T'、u8'F'、 u8'8'
    • 型システムでの例外はありません
    • ヘッダー ファイルのインクルード エラーをテストするための__has_include
    • ポインター変換の配列の修正
    • 継承されたコンストラクターの修正および継承による集約の初期化
    • std 型のユーティリティ関数語呂合わせ
  • ライブラリ追加:

    • データ型:

      • std::variant のタグ付き共用体タイプ
      • null 許容値の場合は std::optional
      • 任意の型の値の場合は std::any
      • 文字配列または部分文字列への参照としての std::string_view
      • std::byte は整数でも文字でもなく、単にデータ
    • ものを呼び出す:

      • 汎用関数呼び出しの std::invoke
      • 関数呼び出しにタプルをアンパックする std::apply
      • オブジェクト構築の std::make_from_tuple および std::apply
      • is_invocable、is_invocable_r、および関数呼び出し機能の invoke_result
    • ファイル システム TS v1: ファイル システム操作の改善
    • 新しいアルゴリズム: for_each_n、reduce 、transform_reduce、exclusive_scan、inclusive_scan、 transform_exclusive_scan、transform_inclusive_scan
    • Threading: std::shared_mutex、atomic::is_always_lockfree、およびscoped_lock
    • 並列処理TS v1: アルゴリズムと関連機構の並列バージョン
    • ライブラリの基礎 TS v1: 検索アルゴリズム、ポリモーフィック アロケーター (pmr)、サンプリング
    • コンテナの改善: try_emplace と insert_or_assign、マップのスプライシングおよびセット、文字列の非 const .data()、非メンバー std::size、std::empty、std::data、コンテナーでの最小限の不完全型サポート、連続反復子 "concept"、constexpr イテレーター、更新されたコンストラクター関数ファミリーを埋め込む
    • スマート ポインターの変更: unique_ptr とweak_from_this を微調整し、this から共有しました
    • その他の std データ型の改善: 中括弧を使用した std::tuple の構築、簡単にコピー可能Reference_wrapper
    • その他:

      • C 17 ライブラリは C99 ではなく C11 に基づいています
      • 予約済み std[0-9]将来の標準ライブラリ用
      • destroy などのユーティリティ関数uninitialized_move、uninitialized_value_construct、および uninitialized_default_construct
      • 特殊な数学関数
      • std::clamp()
      • GCD および LCM の計算
      • 内でスローするための std::uncaught_Exceptionsデストラクター
      • std::as_const および std::bool_constant 型
      • std::void_tおよび std::void_tタイプ
      • std::owner_less内容に基づいてソートするスマート ポインター用
      • std::chrono の改善
      • std::conjunction、std::disjunction、std::negation
      • std::not_fn
      • 内での例外のルールstd
      • std::is_contiguous_layout
      • std::to_chars およびstd::from_chars
  • トレイト:

    • swap、is_aggregate、 has_unique_object_representations

以上がC 17 で導入された主な新機能と拡張機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート