名前空間
変種
操作

C++ コンパイラのサポート状況

提供: cppreference.com
< cpp
 
 
C++言語
一般的なトピック
フロー制御
条件付き実行文
繰り返し文 (ループ)
ジャンプ文
関数
関数宣言
ラムダ関数宣言
inline 指定子
例外指定 (非推奨)
noexcept 指定子 (C++11)
例外
名前空間
指定子
decltype (C++11)
auto (C++11)
alignas (C++11)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点
文字 - 文字列 - nullptr (C++11)
ユーザ定義 (C++11)
ユーティリティ
属性 (C++11)
typedef 宣言
型エイリアス宣言 (C++11)
キャスト
暗黙の変換 - 明示的な変換
static_cast - dynamic_cast
const_cast - reinterpret_cast
メモリ確保
クラス
クラス固有の関数特性
特別なメンバ関数
テンプレート
その他
 

目次


以下の表は C++ の新しい機能に対するコンパイラのサポート状況を示しています。 これには C++11C++14C++17、標準にその後承認された改訂、および様々な技術仕様書が含まれます。

[編集] C++2a の機能

このリストは C++2a のドラフトの更新によって変わる可能性があることに注意してください。


C++2a の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
コンセプト P0734R0 c++2a-lang 6
(TS only)


ビットフィールドに対するデフォルトメンバ初期化子 P0683R1 c++2a-lang 8 6


const& 修飾されたメンバポインタ P0704R1 c++2a-lang 8 6


ラムダキャプチャで [=, this] を許容する P0409R2 c++2a-lang 8 6


__VA_OPT__ P0306R4 c++2a-lang 8 (partial)* 6


指示付き初期化子 P0329R4 c++2a-lang 4.7 (partial)*
8
3.0 (partial)*


総称ラムダのためのテンプレート引数リスト P0428R2 c++2a-lang 8


クラステンプレートの実引数推定における初期化子リストコンストラクタ P0702R1 c++2a-lang 8 6


範囲ベースの for に対する初期化文 P0614R1 c++2a-lang 9


三方比較演算子 P0515R0 c++2a-lang


[[no_unique_address]] 属性 P0840R2 c++2a-lang


[[likely]] および [[unlikely]] 属性 P0479R5 c++2a-lang


typename の省略 P0634R2 c++2a-lang


ラムダの初期化キャプチャにおけるパック展開 P0780R2 c++2a-lang


デフォルト構築可能かつ代入可能なステートレスラムダ P0624R2 c++2a-lang 9


三方比較演算子のサポート <compare> P0515R3 c++2a


std::endian P0463R1 c++2a 8 7


配列をサポートするための std::make_shared の拡張 P0674R1 c++2a


カレンダーおよびタイムゾーン P0355R7 c++2a


std::span P0122R7 c++2a


浮動小数点アトミック P0020R6 c++2a


同期されたバッファ付き出力ストリーム P0053R7 c++2a


<algorithm> および <utility> に対する constexpr P0202R3 c++2a


<complex> に対するさらなる constexpr P0415R1 c++2a


std::remove_cvref P0550R2 c++2a 6


文字列の接頭辞と接尾辞のチェック P0457R2 c++2a 6


ポインタを生のポインタに変換するユーティリティ P0653R2 c++2a 8 6


<version> P0754R2 c++2a 7


C++2a の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++

[編集] C++17 の機能

C++17 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
直接リスト初期化に対する新しい auto のルール N3922 c++17-lang 5 3.8 19.0* 4.10.1 17.0 17.7
メッセージなしの static_assert N3928 c++17-lang 6 2.5 19.10* 4.12 18.0 17.7
テンプレートテンプレート引数における typename N4051 c++17-lang 5 3.5 19.0* 4.10.1 17.0 17.7
トライグラフの削除 N4086 c++17-lang 5 3.5 16.0* 4.15
ネストした名前空間の定義 N4230 c++17-lang 6 3.6 19.0* 4.12 17.0 17.7
名前空間および列挙型に対する属性 N4266 c++17-lang 4.9 (namespaces) / 6 (enumerators) 3.6 19.0* 4.11 17.0 17.7
u8 文字リテラル N4267 c++17-lang 6 3.6 19.0* 4.11 17.0 17.7
すべての非型テンプレート引数に対して定数評価を可能にする N4268 c++17-lang 6 3.6 19.12* 4.15
畳み込み式 N4295 c++17-lang 6 3.6 19.12* 4.14 19.0
register キーワードの非推奨な使用方法を削除する P0001R1 c++17-lang 7 3.8 19.11* 4.13 18.0 17.7
非推奨な operator++(bool) を削除する P0002R1 c++17-lang 7 3.8 19.11* 4.13 18.0 17.7
非推奨な例外指定を C++17 から削除 P0003R5 c++17-lang 7 4 19.10* 4.14 19.0
例外指定を型システムの一部とする P0012R1 c++17-lang 7 4 19.12* 4.14 19.0
基底クラスを持つクラスの集成体初期化 P0017R1 c++17-lang 7 3.9 19.14* 4.15
*this のラムダキャプチャ P0018R3 c++17-lang 7 3.9 19.11* 4.14 19.0
繰り返しなしの属性名前空間の使用 P0028R4 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7
過剰にアラインしたデータのための動的メモリ確保 P0035R4 c++17-lang 7 4 19.12* 4.14
単項畳み込み式および空のパラメータパック P0036R0 c++17-lang 6 3.9 19.12* 4.14
プリプロセッサの条件式における __has_include P0061R1 c++17-lang 5 Yes 19.11* 4.13 18.0 17.7
クラステンプレートに対するテンプレート実引数推定 P0091R3 c++17-lang 7 5 19.14* 4.15
auto 型を用いた非型テンプレート引数 P0127R2 c++17-lang 7 4 19.14*
保証されたコピー省略 P0135R1 c++17-lang 7 4 19.13* 4.15
継承コンストラクタに対する新しい仕様 (DR1941 他) P0136R1 c++17-lang 7 3.9 19.14*
列挙型のデフォルトリスト初期化 P0138R2 c++17-lang 7 3.9 19.11* 4.14 18.0
より厳格な式の評価順序 P0145R3 c++17-lang 7 4 19.14* 4.15
constexpr ラムダ式 P0170R1 c++17-lang 7 5 19.11* 4.14 19.0
範囲ベースの for における異なる begin と end の型 P0184R0 c++17-lang 6 3.9 19.10* 4.12 18.0 17.7
[[fallthrough]] 属性 P0188R1 c++17-lang 7 3.9 19.10* 4.13 18.0 17.7
[[nodiscard]] 属性 P0189R1 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7
using 宣言におけるパック展開 P0195R2 c++17-lang 7 4 19.14* 4.15
[[maybe_unused]] 属性 P0212R1 c++17-lang 7 3.9 19.11* 4.13 18.0 17.7
構造化束縛 P0217R3 c++17-lang 7 4 19.11* 4.14 19.0
16進浮動小数点リテラル P0245R1 c++17-lang 3.0 Yes 19.11* 4.13 18.0 17.7
未知の属性を無視する P0283R2 c++17-lang Yes 3.9 19.11* 4.13 18.0 17.7
constexpr if P0292R2 c++17-lang 7 3.9 19.11* 4.14 19.0
if と switch に対する初期化式 P0305R1 c++17-lang 7 3.9 19.11* 4.14 18.0
インライン変数 P0386R2 c++17-lang 7 3.9* 19.12* 4.14 19.0
DR: テンプレートテンプレート引数のマッチングが互換性のあるテンプレートを除外する P0522R0 c++17-lang 7 4 19.12* 4.15
std::uncaught_exceptions() N4259 c++17 6 3.7 19.0*
std::pairstd::tuple の改善 N4387 c++17 6 4 19.0* N/A N/A
std::shared_mutex (タイムアウト付きでない) N4508 c++17 6 3.7 19.0* N/A N/A
std::string_view N3921 c++17 7 4.0 19.10* N/A
Parallelism TS の標準化 P0024R2 c++17 19.14* N/A 18.0*
初等文字列変換 P0067R5 c++17 8 (partial) 19.14* (partial) N/A
map と set のスプライシング P0083R3 c++17 7 19.12* N/A
ハードウェア干渉サイズ P0154R1 c++17 19.11* N/A
std::filesystem P0218R1 c++17 8 19.14* N/A
std::byte P0298R3 c++17 7 5 19.11* N/A


C++17 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++

[編集] C++14 の機能

C++14 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
文脈的な変換に対する文言の微調整 N3323 c++14-lang 4.9 3.4 18.0* 4.9 16.0 13.1.2* 5.15 8.6 16.1
2進リテラル N3472 c++14-lang 4.3/4.9 2.9 19.0* 4.10 11.0 13.1.2* 5.14 8.6 2015
decltype(auto)、通常の関数に対する戻り値型の推定 N3638 c++14-lang 4.8/4.9 3.3/3.4 19.0* 4.9 15.0 13.1.2* 5.15 8.6 16.1
初期化された/一般化されたラムダキャプチャ (初期化キャプチャ) N3648 c++14-lang 4.5/4.9 3.4 19.0* 4.10 15.0 5.15 8.6 16.1
総称 (多相) ラムダ式 N3649 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.15 8.6 16.1
可変長テンプレート N3651 c++14-lang 5 3.4 19.0* 4.11 17.0 13.1.2* 5.15 8.6 17.4
拡張された constexpr N3652 c++14-lang 5 3.4 19.10* 4.11 17.0 13.1.2* 5.15 8.6 17.4
メンバ初期化子と集成体 (NSDMI) N3653 c++14-lang 5 3.3 19.10* 4.9 16.0 5.14 8.6 16.1
メモリ確保の明確化 (確保の回避/融合) N3664 c++14-lang N/A 3.4 N/A N/A N/A 8.6 17.4
deprecated 属性 N3760 c++14-lang 4.9 3.4 19.0* 4.9 15.0*
16.0
13.1.2* 5.14 8.6 16.1
サイズ付き解放 N3778 c++14-lang 5 3.4 19.0* 4.10.1 17.0 5.14 8.6 16.1
桁区切り文字としてのシングルクォート N3781 c++14-lang 4.9 3.4 19.0* 4.10 16.0 13.1.2* 5.14 8.6 2015
std::result_of と SFINAE N3462 c++14 5 Yes 19.0* N/A N/A 5.15 Yes 8.6 N/A
<complex> に対する constexpr N3302 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
<chrono> に対する constexpr N3469 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
<array> に対する constexpr N3470 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
<initializer_list><utility> および <tuple> に対する constexpr N3471 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
改善された std::integral_constant N3545 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
<chrono> および <string> のためのユーザ定義リテラル N3642 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
ヌル前方イテレータ N3644 c++14 5* 3.4 19.0* N/A N/A 5.15 8.6
std::quoted N3654 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
型混合連想検索 N3657 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
std::integer_sequence N3658 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
std::shared_timed_mutex N3659 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
std::exchange N3668 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
const のない constexpr メンバ関数の修正 N3669 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
std::get<T>() N3670 c++14 5 3.4 19.0* N/A N/A 5.15 8.6
2つの範囲を取る std::equalstd::is_permutationstd::mismatch N3671 c++14 5 3.4 19.0* N/A N/A 5.15 8.6


C++14 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++

[編集] C++11 の機能

C++11 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++
alignas N2341 c++11 4.8 3.0 19.0* 4.8 15.0 13.1.2* 5.13 Yes 8.6 2015
alignof N2341 c++11 4.5 2.9 19.0* 4.8 15.0 13.1.2* 5.13 Yes 8.4 2015
アトミック操作 N2427 c++11 4.4 3.1 17.0* Yes 13.0 13.1.2* 5.14 Yes 8.4 2015
auto N1984(v1.0) c++11 4.4(v1.0) Yes 16.0* 4.1(v0.9) 11.0(v0.9)
12.0(v1.0)
11.1(v1.0) 5.13 Yes 8.4 2015 A.06.25
C99 のプリプロセッサ N1653 4.3 Yes 19.0* (partial - buggy variadic macros) 4.1 11.1 10.1 5.9 Yes 8.4 2015 A.06.25 Yes
constexpr N2235 c++11 4.6 3.1 19.0* (partial) 4.6 13.0*
14.0
12.1*
13.1
5.13 Yes 8.4 2015 A.06.28
decltype v1.0: N2343

v1.1: N3276

c++11 4.3(v1.0)
4.8.1(v1.1)
2.9 16.0* 4.1(v1.0) 11.0(v1.0)
12.0(v1.1)
11.1(v1.0) 5.13 Yes 8.4 2015 A.06.25 8.52(v1.0)
デフォルト化された関数と削除された関数 N2346 c++11 4.4 3.0 18.0* 4.1 12.0 13.1 5.13 Yes 8.4 2015 A.06.25
移譲コンストラクタ N1986 c++11 4.7 3.0 18.0* 4.7 14.0 11.1 5.13 Yes 8.4 2015 A.06.28
explicit 変換演算子 N2437 c++11 4.5 3.0 18.0* 4.4 13.0 12.1 5.13 Yes 8.4 2015 A.06.27
拡張された friend 宣言 N1791 c++11 4.7 2.9 16.0* (partial) 4.1 11.1*
12.0
11.1 5.13 Yes 8.4 2015 A.06.25
extern template N1987 c++11 3.3 Yes 12.0* 3.9 9.0 11.1 5.13 Yes 8.4 2015 A.06.25
前方 enum 宣言 N2764 c++11 4.6 3.1 17.0* 4.5 11.1*
14.0
12.1 5.13 Yes 8.4 2015
継承コンストラクタ N2540 c++11 4.8 3.3 19.0* 4.8 15.0 13.1.1* 5.13 Yes 8.4 2015
初期化子リスト N2672 c++11 4.4 3.1 18.0* 4.5 13.0*
14.0
13.1.2* 5.13 Yes 8.4 2015 A.06.28
ラムダ式 v0.9: N2550

v1.0: N2658
v1.1: N2927

c++11 4.5(v1.1) 3.1 16.0*(v1.0)
17.0*(v1.1)
4.1(v1.1) 12.0(v1.1) 13.1.2* 5.13 Yes 8.4 2015 A.06.25
テンプレート引数としてのローカルな型および無名の型 N2657 4.5 2.9 16.0* 4.2 12.0 13.1.2* 5.13 Yes 8.4 2015 A.06.27
long long N1811 c++11 Yes Yes 14.0* Yes Yes Yes Yes Yes 8.4 2015 Yes Yes
インライン名前空間 N2535 c++11 4.4 2.9 19.0* 4.5 14.0 11.1 5.13 Yes 8.4 2015 A.06.28
新しい文字型 N2249 c++11 4.4 2.9 19.0* 4.4 12.1*
14.0
13.1.1* 5.13 Yes 8.4 2015 A.06.27 8.52
後置された関数の戻り値型 N2541 c++11 4.4 2.9 16.0* 4.1 12.0 12.1 5.13 Yes 8.4 2015 A.06.27
nullptr N2431 c++11 4.6 2.9 16.0* 4.2 12.1 13.1 5.13 Yes 8.4 2015 A.06.27 8.52
Unicode 文字列リテラル N2442 c++11 4.4 3.0 19.0* 4.7 11.0* 10.1*
13.1.1*
5.7 Yes 8.4 2015 A.06.28 8.52
生の文字列リテラル N2442 c++11 4.5 Yes 18.0* 4.7 14.0 13.1.1* 5.13 Yes 8.4 2015 A.06.28 8.52
ユーザ定義リテラル N2765 c++11 4.7 3.1 19.0* 4.8 15.0 13.1.2* 5.14 Yes 8.4 2015
閉じ山括弧 N1757 c++11 4.3 Yes 14.0* 4.1 11.0 12.1 5.13 Yes 8.4 2015
右辺値参照 v1.0: N2118

v2.0: N2844
v2.1: N2844+
v3.0: N3053

c++11 4.3(v1.0)
4.5(v2.1)
4.6(v3.0)
Yes 16.0*(v2.0)
17.0*(v2.1)
19.0*(v3.0)
4.5(v3.0) 11.1(v1.0)
12.0(v2.0)
14.0(v3.0)
12.1(v2.1) 5.13 Yes 8.4 2015 A.06.25
static_assert N1720 c++11 4.3 2.9 16.0* 4.1 11.0 11.1 5.13 Yes 8.4 2015 A.06.25 8.52
強く型付けされた enum N2347 c++11 4.4 2.9 17.0* 4.0 13.0 12.1 5.13 Yes 8.4 2015 A.06.25
テンプレートエイリアス N2258 c++11 4.7 3.0 18.0* 4.2 12.1 13.1.1* 5.13 Yes 8.4 2015 A.06.27
スレッドローカルストレージ N2659 c++11 4.4*
4.8
3.3*
3.3
16.0* (partial)
19.0*
4.8 11.1*
15.0*
10.1*
13.1.2*
5.9* Yes 8.4 2015 8.52*
制限解除された union N2544 c++11 4.6 3.0 19.0* 4.6 14.0* 13.1.2* 5.13 Yes 8.4 2015 A.06.28
型特性 N1836 c++11 4.3 3.0 14.0* 4.0 10.0 13.1.3 5.13 Yes 8.4 2015 6.16
可変長テンプレート v0.9: N2242

v1.0: N2555

c++11 4.3(v0.9)
4.4(v1.0)
2.9(v1.0) 18.0* 4.1(v0.9) 12.1(v1.0) 11.1(v0.9) 5.13 Yes 8.4 2015 A.06.27
範囲 for ループ N2930 c++11 4.6 3.0 17.0* 4.5 13.0 13.1.2* 5.13 Yes 8.4 2015 A.06.28
overridefinal v0.8: N2928

v0.9: N3206
v1.0: N3272

c++11 4.7 2.9 14.0* (partial)
17.0*
4.8(v1.0) 12.0(v0.8)
14.0(v1.0)
13.1.1* 5.13 Yes 8.4 2015
属性 N2761 c++11 4.8 3.3 19.0* 4.2 12.1 13.1.1* 5.13 Yes 8.4 2015 A.06.27
参照修飾子 N2439 c++11 4.8.1 2.9 19.0* 4.7 14.0 13.1.2* 5.13 Yes 8.4 2015 A.06.28
非静的データメンバの初期化子 N2756 c++11 4.7 3.0 18.0* 4.6 14.0 13.1.2* 5.13 Yes 8.4 2015 A.06.28
平行処理と動的初期化/破棄 (魔法の static) N2660 c++11 4.3 2.9 19.0* Yes 11.1* 13.1.2* 5.13 Yes 8.4 2015 A.06.25
noexcept N3050 c++11 4.6 3.0 19.0* 4.5 14.0 13.1.1* 5.13 Yes 8.4 2015 A.06.28
動的なポインタの安全性 (GC インタフェース) N2670 c++11 N/A
金額、時間、16進浮動小数点の入出力マニピュレータ Time: N2071

Money: N2072

c++11 5 3.8 19.0* N/A 5.15


C++11 の機能
 
文書
 
バージョン
 
GCC
Clang
MSVC
EDG eccp
Intel C++
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Cray
Portland Group (PGI)
HP aCC
Digital Mars C++

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


[編集] 参考文献

各ベンダの互換性チェックリスト (上の表よりも最新です)

  • GCC (Updated 2018-05)
  • Clang++ (Updated 2017-09)
  • Microsoft Visual Studio (updated 2018-05)
  • Intel C++ (Updated 2017-11)
  • Parallel STL (an implementation of the C++17 standard library algorithms with support for execution policies)
  • EDG (Updated 2017-09)
  • Oracle C++ (updated 2017-07)
  • Full C++14 support added in 5.15.
  • Oracle ships 4 implementations of the C++ standard library:
  • libCstd (RogueWave Standard Library version 2), predates C++98
  • stlport4 (STLport Standard Library version 4.5.3), predates C++03
  • stdcxx4 (Apache Standard Library version 4), predates C++11
  • libstdc++ (GCC runtime library, support for C++11 and C++14 depending on release)
  • IBM XL C++ (updated 2018-05)
  • IBM XL C++ for Linux
  • Core language support status: C++11 complete as of 13.1.6, C++14 partial in 16.1.0
  • IBM does not ship an implementation of C++ standard library for Linux (uses GNU libstdc++)
  • IBM XL C++ for AIX
  • HP aCC
  • Digital Mars C++
  • Embarcadero C++
  • Cray (updated 2018-01)
  • Portland Group (PGI) (updated 2016-07)
  • Release notes for 2016 claim C++14 support, except "generalized constexpr and constexpr member functions and implicit const, variable templates, clarifying memory allocation (merged allocation)"
  • Texas Instruments (updated 2018-05)
  • Analog Devices (updated 2018-05)