C++17の新機能は何ですか? 質問する

C++17の新機能は何ですか? 質問する

C++17 は現在機能が完全であるため、大きな変更は発生しないと思われます。C++17 については何百もの提案が提出されました。

これらの機能のうち、C++17 で C++ に追加されたのはどれですか?

「C++1z」をサポートする C++ コンパイラを使用する場合、コンパイラが C++17 に更新されると、どの機能が利用できるようになりますか?

ベストアンサー1

言語機能:

テンプレートと汎用コード

ラムダ

属性

構文のクリーンアップ

クリーナーマルチリターンとフロー制御

  • 構造化バインディング

    • 基本的にファーストクラスstd::tieauto
    • 例:
      • const auto [it, inserted] = map.insert( {"foo", bar} );
      • 返されるから推測された型を持つ変数itとを作成します。insertedpairmap::insert
    • タプル/ペアのような構造std::arrayや比較的フラットな構造で動作します
    • 実際の名前構造化バインディング標準で
  • if (init; condition)そしてswitch (init; condition)

    • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
    • を、bool に適切に変換できないif(decl)ケースに拡張します。decl
  • 範囲ベースの for ループの一般化

    • 主にセンチネル、つまり開始反復子と同じ型ではない終了反復子をサポートしているようで、これは null 終了ループなどに役立ちます。
  • 定数の場合

    • ほぼ汎用的なコードを簡素化するための、多くの要望があった機能。

その他

ライブラリの追加:

データ型

  • std::variant<Ts...>

    • 最後に確認したときは、ほとんど常に空ではありませんでしたか?
    • タグ付きユニオン型
    • {素晴らしい|役に立つ}
  • std::optional

    • 何かを持っているかもしれない
    • 非常に便利
  • std::any

    • コピー可能なものなら何でも1つ保持する
  • std::string_view

  • std::byte彼らの手に余る仕事を。

    • 整数でも文字でもなく、単なるデータ

ものを呼び出す

ファイル システム TS v1

新しいアルゴリズム

  • for_each_n

  • reduce

  • transform_reduce

  • exclusive_scan

  • inclusive_scan

  • transform_exclusive_scan

  • transform_inclusive_scan

  • スレッド化の目的で追加され、スレッド化して使用していない場合でも公開されます

スレッド

(の部品)ライブラリの基礎 TS v1上記または下記に記載されていない

コンテナの改善

スマートポインタの変更

その他のstdデータ型の改善:

その他

特性

非推奨

Isocpp.orgにはC++14 以降の変更点の独立したリストがありますが、一部は略奪されています。

当然ながら、TS の作業は並行して進められているため、まだ完成していない TS がいくつかあり、それらは次のイテレーションまで待たなければなりません。次のイテレーションのターゲットは、噂にもあった C++19 ではなく、以前の計画どおり C++20 です。C++1O は回避されました。

当初のリストはこのRedditの投稿そしてこのRedditの投稿グーグル検索または上記の isocpp.org ページからリンクが追加されました。

略奪された追加エントリSD-6機能テストリスト。

clangの機能一覧そしてライブラリ機能リスト次に略奪されるのは、C++17ではなくC++1zなので、信頼できないようです。

これらのスライド他の部分には欠けている機能がいくつかありました。

「何が削除されたか」は尋ねられていませんが、C++17 で C++ から削除されたいくつかの項目 ((ほとんど?) 以前から非推奨だったもの) の短いリストを以下に示します。

削除:

言い換えがありました。これがコードに何らかの影響を与えるのか、それとも標準の単なるクリーンアップなのかはわかりません。

上記にまだ統合されていない論文:

  • 品番(constexpr クロノ)

  • P0418R2(アトミック微調整)

  • 品番(テンプレート引数の推論の調整)

  • 品番(構造化バインディングの調整)

  • 品番(に変更std::hash

  • 品番(例外は並行)

  • 品番(例外処理の制限の更新)

  • 品番(例外仕様を型システムの一部にする)

  • 品番(バリアントの制限)

  • 品番(オプション/バリアント/任意のタグ)

  • 品番(共有ptr調整)

  • 品番(構造化バインディング ノード ハンドル)

  • 品番(共有ポインタの使用回数と固有の変更?)

仕様変更:

さらに詳しい情報:

おすすめ記事