名前空間
変種
操作

C++17

提供: cppreference.com
< cpp

以下の機能が C++17 にマージされました。

  1. TS から: ファイルシステムライブラリ、ライブラリ基礎v1 (optionalanystring_view多相アロケータ検索子apply など)、並列処理v1 (実行ポリシーreduceinclusive_scanexclusive_scan など) (ただし exception_list は削除されました)、特殊関数 IS から: 数学の特殊関数、ライブラリ基礎v2から: std::gcdstd::lcm
  2. C11 から: std::aligned_alloc, std::timespec_get

目次

[編集]廃止

削除

非推奨

  • std::iterator
  • std::raw_storage_iterator
  • std::get_temporary_buffer
  • std::is_literal_type
  • std::result_of
  • <codecvt> のすべて

[編集]新しい言語機能

[編集]新しいヘッダ

[編集]新しいライブラリ機能

[編集]ユーティリティ

[編集]動的メモリ管理



[編集]

[編集]アルゴリズム

[編集]コンテナ関係

[編集]数値演算

[編集]その他

[編集] 欠陥報告

C++17 で修正された欠陥報告 (コア289個、ライブラリ281個)

[編集]コンパイラのサポート状況

主記事: C++ コンパイラのサポート状況

[編集] C++17 のコア言語の機能

C++17 の機能
 
文書
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc
直接リスト初期化に対する新しい auto のルール N39225 3.8 19.0*Yes 4.10.1 17.0 10.3 17.7
メッセージなしの static_assertN39286 2.5 19.10*Yes 4.12 18.0 10.3 17.7 11.0
テンプレートテンプレート引数における typenameN40515 3.5 19.0*Yes 4.10.1 17.0 10.3 17.7
トライグラフの削除 N40865 3.5 16.0*Yes 5.0 10.3 19.1
ネストした名前空間の定義 N42306 3.6 19.0*Yes 4.12 17.0 10.3 17.7
名前空間および列挙子に対する属性 N42664.9 (partial)*
6
3.6 19.0*Yes 4.11 17.0 10.3 17.7
u8 文字リテラルN42676 3.6 19.0*Yes 4.11 17.0 10.3 17.7
すべての非型テンプレート引数に対して定数評価を可能にする N42686 3.6 19.12*Yes 5.0 19.0.1 10.3 19.1
畳み込み式N42956 3.6 19.12*Yes 4.14 19.0 10.3 18.1
単項畳み込み式および空のパラメータパック P0036R06 3.9 19.12*Yes 4.14 10.3 19.1
register キーワードの非推奨な使用方法を削除する P0001R17 3.8 19.11*Yes 4.13 18.0 10.3 17.7
非推奨な operator++(bool) を削除する P0002R17 3.8 19.11*Yes 4.13 18.0 10.3 17.7
例外指定を型システムの一部とする P0012R17 4 19.12*Yes 4.14 19.0 10.3 19.1
基底クラスを持つクラスの集成体初期化P0017R17 3.9 19.14*Yes 5.0 19.0.1 10.3 19.1
プリプロセッサの条件式における __has_includeP0061R15 Yes 19.11*Yes 4.13 18.0 10.3 17.7
DR: 継承コンストラクタに対する新しい仕様 (DR1941 他) P0136R17 3.9 19.14*Yes 6.1 10.3 19.1
*this のラムダキャプチャ P0018R37 3.9 19.11*Yes 4.14 19.0 10.3 18.1
列挙の直接リスト初期化 P0138R27 3.9 19.11*Yes 4.14 18.0 10.3 19.1
constexpr ラムダ式 P0170R17 5 19.11*Yes 4.14 19.0 10.3 18.1
範囲ベースの for における begin と end の型を別々にする P0184R06 3.9 19.10*Yes 4.12 18.0 10.3 17.7
[[fallthrough]] 属性 P0188R17 3.9 19.10*Yes 4.13 18.0 10.3 17.7
[[nodiscard]] 属性 P0189R17 3.9 19.11*Yes 4.13 18.0 10.3 17.7
[[maybe_unused]] 属性 P0212R17 3.9 19.11*Yes 4.13 18.0 10.3 17.7
16進浮動小数点リテラルP0245R13.0 Yes 19.11*Yes 4.13 18.0 10.3 17.7
繰り返しなしの属性名前空間の使用 P0028R47 3.9 19.11*Yes 4.13 18.0 10.3 17.7
オーバーアラインされたデータのための動的メモリ確保P0035R47 4 19.12*

10.0.0*

4.14 19.0 10.3 19.1
クラステンプレートの実引数推定P0091R37 5 19.14*Yes 5.0 19.0.1 10.3 19.1
auto 型を用いた非型テンプレート引数 P0127R27 4 19.14*Yes 5.0 19.0.1 10.3 19.1
コピー省略の保証 P0135R17 4 19.13*Yes 5.0 19.0.1 10.3 19.1
参照メンバを持つクラスオブジェクトの再配置 P0137R17 6 19.14*Yes 5.0 10.3 19.1
より厳格な式の評価順序P0145R37 4 19.14*Yes 5.0 19.0.1 10.3 19.1
構造化束縛P0217R37 4 19.11*Yes 4.14 19.0 10.3 18.1 11.0*
未知の属性を無視する P0283R2Yes 3.9 19.11*Yes 4.13 18.0 10.3 17.7
constexpr ifP0292R27 3.9 19.11*Yes 4.14 19.0 10.3 18.1 11.0
if および switch に対する初期化文 P0305R17 3.9 19.11*Yes 4.14 18.0 10.3 18.1
インライン変数P0386R27 3.9 19.12*Yes 4.14 19.0 10.3 18.1 11.0
非推奨な例外指定を C++17 から削除する P0003R57 4 19.10*Yes 4.14 19.0 10.3 19.1
using 宣言におけるパック展開 P0195R27 4 19.14*Yes 5.0 19.0 10.3 19.1
DR: テンプレートテンプレート引数のマッチングから互換なテンプレートを除外する P0522R07 4 19.12*Yes 5.0 19.0.1 10.3 19.1
C++17 の機能
 
文書
 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
Nvidia nvcc

[編集] C++17 のライブラリの機能

C++17 の機能
 
文書
 
GCC libstdc++
Clang libc++
MSVC の
標準ライブラリ
Apple Clang
Intel Parallel STL
Sun/Oracle C++ の
標準ライブラリ
Embarcadero C++ Builder の
標準ライブラリ
Cray C++ の
標準ライブラリ
std::void_tN39116 3.6 19.0*Yes N/A10.3
std::uncaught_exceptions()N42596 3.7 19.0*Yes N/A
std::size()std::empty() および std::data()N42806 3.6 19.0*Yes N/A10.3
std::pairstd::tuple の改善 N43876 4 19.0*Yes N/A10.3
std::bool_constantN43896 3.7 19.0*Yes N/A10.3
std::shared_mutex (タイムアウト付きでない) N45086 3.7 19.0*Yes N/A10.3
型特性変数テンプレート P0006R07 3.8 19.0*Yes N/A10.3
論理演算子型特性P0013R16 3.8 19.0*Yes N/A10.3
Parallelism TS の標準化 P0024R29*19.14*18.0*
std::clamp()P0025R07 3.9 19.0*

10.0.0*

N/A10.3
ハードウェア干渉サイズP0154R119.11*N/A
スワップ可能型特性P0185R17 3.9 19.0*

10.0.0*

N/A10.3
ファイルシステムライブラリP0218R18 7 19.14*

11.0.0*

N/A10.3
std::string_viewN3921
P0220R1
7 4 19.10*

10.0.0*

N/A10.3
std::anyP0220R17 4 19.10*

10.0.0*

N/A10.3
std::optionalP0220R17 4 19.10*

10.0.0*

N/A10.3
多相メモリリソースP0220R19 19.13*N/A10.3
数学の特殊関数P0226R17 19.14*N/A10.3
C++17 は C99 ではなく C11 を参照するべき P0063R39 7 19.0*
(partial)*

10.0.0*

N/A
map と set のスプライシング P0083R37 8 19.12*

10.0.0*

N/A
std::variantP0088R37 4 19.10*

10.0.0*

N/A10.3
std::make_from_tuple()P0209R27 3.9 19.10*Yes N/A10.3
std::has_unique_object_representationsP0258R27 6 19.11*Yes N/A10.3
std::gcd()std::lcm()P0295R07 4 19.11*Yes N/A10.3
std::not_fnP0005R4
P0358R1
7 3.9 19.12*Yes N/A10.3
初等文字列変換P0067R58 (no FP) 7 (no FP) 19.14* (no FP)*
19.24*

10.0.0* (no FP)

N/A
std::shared_ptrstd::weak_ptr の配列サポート P0414R27 11 19.12*N/A10.3
std::scoped_lockP0156R27 5 19.11*Yes N/A10.3
std::byteP0298R37 5 19.11*Yes N/A10.3
std::is_aggregateLWG29117 5 19.15*Yes N/A10.3
C++17 の機能
 
文書
 
GCC libstdc++
Clang libc++
MSVC の
標準ライブラリ
Apple Clang
Intel Parallel STL
Sun/Oracle C++ の
標準ライブラリ
Embarcadero C++ Builder の
標準ライブラリ
Cray C++ の
標準ライブラリ

* - 注釈を見るにはバージョン番号にマウスポインタを当ててください

close