言語機能 - cpprefjp C++日本語リファレンス
Toggle navigation
cpprefjp - C++日本語リファレンス
GitHub Project
言語機能
Class / Function / Type
std::
Header file
<
>
Other / All
crsearch v3.0.23
最終更新日時(UTC):
2023年09月29日 05時06分05秒
Akira Takahashi
が更新
履歴
編集
言語機能
ここでは、C++の言語機能の解説を記載する。
C++11
C++14
C++17
C++20
C++23
C++26
C++ (将来)
C++ (廃案)
言語拡張
運営方針
コンパイラの実装状況ページ
に沿って、言語のバージョンアップによって追加・更新された言語機能を解説する。
C++全体の言語機能を解説することは、当面の間、目指さない。
バージョン更新に追従するのが大変であること、量が途方もなくなる、という理由から、できるところからやる。
C++全体の言語解説を追加する場合には、このページの下に
general
階層を作って、そこで作業する。
リファレンス
algorithm
any
array
atomic
barrier
bit
bitset
cassert
cctype
cerrno
cfenv
cfloat
charconv
chrono
climits
cmath
codecvt
compare
complex
concepts
condition_variable
contract
coroutine
cstddef
cstdint
cstdio
cstdlib
ctime
debugging
deque
exception
execution
expected
exposition-only
filesystem
flat_map
format
forward_list
fstream
functional
future
generator
initializer_list
iomanip
ios
iostream
istream
iterator
latch
limits
linalg
list
locale
map
mdspan
memory
memory_resource
mutex
new
node_handle
numbers
numeric
optional
ostream
print
queue
random
ranges
ratio
regex
scoped_allocator
semaphore
set
shared_mutex
source_location
span
sstream
stack
stacktrace
stdatomic.h
stdexcept
stdfloat
stop_token
streambuf
string
string_view
syncstream
system_error
thread
tuple
type_traits
typeindex
typeinfo
unordered_map
unordered_set
utility
valarray
variant
vector
version
説明専用ライブラリ
モジュール
std.compat
std
言語機能
C++ (将来)
契約に基づくプログラミング
C++26
static_assertの診断メッセージにユーザーが生成した文字列の指定を許可 [P2741R3]
列挙値から算術型への暗黙変換を非推奨化 [P2864R2]
未初期化変数の読み取りをエラー性動作とする [P2795R5]
条件式での構造化束縛の使用を許可 [P0963R3]
構造化束縛への属性を許可 [P0609R3]
関数宣言を削除する理由を指定できるようにする [P2573R2]
C++23
#warningのサポートを追加 [P2437R1]
(符号付き)size_tリテラルのためのサフィックス [P0330R8]
1ワイド文字に収まらないワイド文字リテラルを禁止する [P2362R3]
constexpr関数が定数実行できない場合でも適格とする [P2448R2]
constexpr関数内でconsteval関数を呼び出せない問題を軽減 [P2564R3]
constexpr関数内でのstatic constexpr変数を許可 [P2647R1]
elifdef/elifndefのサポートを追加 [P2334R1]
if consteval [P1938R3]
thisポインタをもつ必要のない演算子をstaticとして宣言できるようにする [P1169R4]
アクセス制御の異なるメンバ変数のレイアウトを宣言順に規定 [P1847R4]
エスケープシーケンスの区切り [P2290R3]
コード内容の仮定をコンパイラに伝える`assume`属性 [P1774R8]
ラムダ式で()を省略できる条件を緩和 [P1102R2]
ラムダ式に対する属性 [P2173R1]
初期化文での型の別名宣言を許可 [P2360R0]
参照するPOSIX規格を更新
名前付きユニバーサルキャラクタ名 [P2071R2]
変数テンプレートの部分特殊化を許可 [P2096R2]
定数式の文脈でのboolへの縮小変換を許可 [P1401R5]
定数式内での非リテラル変数、静的変数・スレッドローカル変数およびgotoとラベルの存在を許可する [P2242R3]
文字リテラルエンコーディングを一貫させる [P2316R2]
暗黙的なムーブを簡略化 [P2266R3]
更新された定義済みマクロ
機能テストマクロ
汎用的なソースコードのエンコーディングとしてUTF-8をサポート [P2295R6]
添字演算子の多次元サポート [P2128R6]
無意味なexport宣言を禁止する [P2615R1]
異なる文字エンコーディングをもつ文字列リテラルの連結を不適格とする [P2201R1]
範囲for文が範囲初期化子内で生じた一時オブジェクトを延命することを規定 [P2718R0]
継承コンストラクタからのクラステンプレート引数の推論 [P2582R1]
行末スペースを無視するよう規定 [P2223R2]
複合文の末尾へのラベルを許可 [P2324R2]
静的な診断メッセージの文字エンコーディング [P2246R1]
C++20
PODを非推奨化 [P0767R1]
UTF-8エンコーディングされた文字の型として`char8_t`を追加 [P0482R6]
Unicode標準への参照を更新
[=]によるthisの暗黙のキャプチャを非推奨化 [P0806R2]
[[nodiscard]]をコンストラクタのオーバーロードごとに付加できるようにする
[[nodiscard]]属性に理由となる文字列を付加できるようにする [P1301R4]
`<=>`/`==`による比較演算子の自動定義 [P0515R3]
autoパラメータによる関数テンプレートの簡易定義
char16_tとchar32_tの文字・文字列リテラルを、文字コードUTF-16/32に規定 [P1041R4]
constexpr関数内でのtry-catchブロックを許可 [P1002R1]
constexpr関数内でのトリビアルなデフォルト初期化を許可 [P1331R2]
constexpr関数内で未評価のインラインアセンブリを許可することによる組み込み関数のconstexpr有効化 [P1668R1]
const修飾されたメンバポインタの制限を修正 [P0704R1]
friend指定された関数内から構造化束縛を使用して非公開メンバ変数にアクセスすることを許可 [P0969R0]
new式での配列要素数の推論 [P1009R2]
throw()による例外送出しない指定を削除
ほとんどの`volatile`を非推奨化 [P1152R4]
エイリアステンプレート経由でのクラステンプレートのテンプレート引数推論 [P1814R0]
コルーチン [P0912R5]
コンセプト [P0734R0]
コンパイル時初期化を強制する`constinit`キーワードを追加 [P1143R2]
ジェネリックラムダのテンプレート構文 [P0428R2]
スコープ付き列挙型のusing宣言 [P1099R5]
デフォルトのコピーコンストラクタと非constなコンストラクタが衝突する問題を修正 [P0641R2]
ビットフィールドのメンバ変数初期化 [P0683R1]
ポインタから`bool`への変換を縮小変換とする [P1957R2]
モジュール [P1103R3]
ユーザー宣言したコンストラクタを持つクラスの集成体初期化を禁止 [P1008R1]
ラムダ式のキャプチャとして[=, this]を許可する [P0409R2]
ラムダ式の初期化キャプチャでのパック展開を許可 [P0780R2]
丸カッコの値リストからの集成体初期化を許可 [P0960R3]
入れ子名前空間定義でのインライン名前空間 [P1094R2]
列挙値から算術型への暗黙変換を非推奨化 [P1120R0]
初期化式をともなう範囲for文 [P0614R1]
可変サイズをもつコンテナのconstexpr化 [P0784R7]
可変引数が空でない場合のトークン置換 [P0306R4]
可変長データを扱うクラスの効率的なdelete [P0722R3]
型の文脈でtypenameの省略を許可 [P0634R3]
定数式からの仮想関数の呼び出しを許可 [P1064R0]
定数式での`dynamic_cast`、多態的な`typeid`を許可 [P1327R1]
定数式内での共用体のアクティブメンバの変更を許可 [P1330R0]
属性の名前空間を予約
常に定数式評価する`consteval` [P1073R3]
抽象型のチェック [P0929R2]
指示付き初期化 [P0329R4]
暗黙のラムダキャプチャを簡略化 [P0588R1]
更新された定義済みマクロ
未初期化領域への暗黙的なオブジェクト構築
構造化束縛がカスタマイゼーションポイントを見つけるルールを緩和 [P0961R1]
構造化束縛した変数の参照キャプチャを許可 [P1381R1]
構造化束縛を拡張して通常の変数宣言のように使用できるようにする [P1091R3]
機能テストマクロ
添字演算子内でのカンマ演算子の使用を非推奨化 [P1161R3]
特殊化のアクセスチェック [P0692R1]
状態を持たないラムダ式を、デフォルト構築可能、代入可能とする [P0624R2]
確率が高い分岐と低い分岐を伝える属性 [[likely]], [[unlikely]] [P0479R5]
空オブジェクトに対する最適化を支援する属性[[no_unique_address]] [P0840R2]
符号付き整数型が2の補数表現であることを規定 [P1236R1]
範囲for文がカスタマイゼーションポイントを見つけるルールを緩和 [P0962R1]
要素数不明の配列への変換を許可 [P0388R4]
評価されない文脈でのラムダ式 [P0315R4]
評価されない文脈での定数式評価によって特殊メンバ関数がインスタンス化されることを規定 [P0859R0]
関数を条件付きでexplicitにする構文を追加 [P0892R2]
関数テンプレートに明示的に型指定した場合にADLで見つからない問題を修正 [P0846R0]
集成体クラステンプレートのテンプレート引数推論 [P1816R0]
非型テンプレートパラメータとしてクラス型を許可する [P0732R2]
C++17
16進浮動小数点数リテラル [P0245R1]
UTF-8文字リテラル [N4267]
[[fallthrough]]属性 [P0188R1]
[[maybe_unused]]属性 [P0212R1]
[[nodiscard]]属性 [P0189R1]
__has_include [P0061R1]
constexpr if 文 [P0292R2]
constexpr ラムダ [P0170R1]
enum class変数の初期値として整数を指定する際の規則を調整 [P0138R2]
if文とswitch文の条件式と初期化を分離 [P0305R1]
noexcept付きのラムダ式から変換する関数ポインタにnoexceptを付加する
static_assert のメッセージ省略を許可 [N3928]
using宣言のパック展開 [P0195R2]
アライメント指定されたデータの動的メモリ確保 [P0035R4]
インライン変数 [P0386R2]
クラステンプレートのテンプレート引数推論 [P0091R3]
テンプレートテンプレートパラメータにtypenameキーワードの使用を許可 [N4051]
トライグラフの削除 [N4086]
ラムダ式での*thisのコピーキャプチャ [P0018R3]
不明な属性を無視する [P0283R2]
例外仕様を型システムの一部にする [P0012R1]
値のコピー省略を保証 [P0135R1]
入れ子名前空間の定義 [N4230]
全ての非型テンプレート引数の定数式評価を許可 [N4268]
単一要素の波カッコ初期化を非配列とする [N3922]
厳密な式の評価順 [P0145R3]
参照メンバをもつクラスの置き換え [P0137R1]
名前空間と列挙子への属性付加を許可 [N4266]
基底クラスのメンバ変数を集成体初期化するための波カッコを省略できるようにする [P0017R1]
変数テンプレートのデフォルトテンプレート引数を許可
属性の名前空間指定に繰り返しをなくす [P0028R4]
更新された定義済みマクロ
構造化束縛 [P0217R3]
機能テストマクロ
畳み込み式 [N4295]
範囲for文のイテレータ型が一致しないことを許可 [P0184R0]
非型テンプレートパラメータのauto宣言 [P0127R2]
非推奨だった bool 型に対するインクリメント演算子を削除 [P0002R1]
非推奨だったregisterキーワードを削除 [P0001R1]
非推奨だった古い例外仕様を削除 [P0003R5]
C++14
2進数リテラル [N3472]
[[deprecated]]属性 [N3760]
`constexpr`関数内での条件分岐とループの文を許可 [N3652]
decltype(auto)
nullptr_t型の定数式を非型テンプレートパラメータとすることを許可
サイズ付きデアロケーション [N3778]
ジェネリックラムダ [N3649]
ネストする集成体初期化における波カッコ省略を許可 [N3653]
ラムダ式の初期化キャプチャ [N3648]
リテラル演算子のスペースを省略可能とする
動的メモリ確保の省略の許可
変数テンプレート [N3651]
宣言時のメンバ初期化を持つ型の集成体初期化を許可
後置戻り値型をプレースホルダーにすることを許可
数値リテラルの桁区切り文字 [N3781]
更新された定義済みマクロ
機能テストマクロ
通常関数の戻り値型推論 [N3638]
C++11
C99互換で導入された定義済みマクロ
POSIX用の名前空間を予約
Pragma演算子 [N1653]
UTF-8文字列リテラル [N2442]
alignas [N2341]
alignof [N2341]
char16_tとchar32_t [N2249]
constexpr [N2235]
decltype [N2343]
extern template [N1987]
friend宣言できる対象を拡張 [N1791]
long long型 [N1811]
noexcept [N3050]
nullptr [N2431]
overrideとfinal [N2928]
registerキーワードを非推奨化
sizeof演算子にクラスの非静的メンバを、オブジェクトを作らずに指定できるようにする
インライン名前空間 [N2535]
エイリアステンプレート [N2258]
コンパイル時アサート [N1720]
スコープを持つ列挙型 [N2347]
スレッドローカルストレージ [N2659]
テンプレートでの連続した右山カッコを許可 [N1757]
テンプレートのエクスポート機能を削除
テンプレート再帰回数の制限緩和
ブロックスコープを持つstatic変数初期化のスレッドセーフ化 [N2660]
メンバ関数の左辺値/右辺値修飾 [N2439]
ユーザー定義リテラル [N2765]
ラムダ式 [N2927]
ローカル型と無名型を、テンプレート引数として使用することを許可 [N2657]
一様初期化 [N2672]
事前定義識別子__func__ [N1653]
任意の式によるSFINAE [N2634]
依存名に対するtypenameとtemplateの制限緩和
入れ子名の指定にグローバルスコープ :: を付加することを許可
共用体でクラスオブジェクトをもつことを許可 [N2544]
列挙子の末尾へのカンマ付加を許可
初期化子リスト [N2672]
参照への参照を折りたたむ
可変引数テンプレート [N2242]
可変引数マクロ [N1653]
右辺値参照・ムーブセマンティクス [N2118]
変数の型推論のためのauto [N1984]
委譲コンストラクタ [N1986]
宣言時に要素数を指定した配列オブジェクトの、定義時の要素数を規定
属性構文 [N2761]
戻り値の型を後置する関数宣言構文 [N2541]
整数に対する除算と剰余算の丸め結果を規定
文字列リテラルとワイド文字列リテラルの結合
明示的な型変換演算子のオーバーロード [N2437]
更新された定義済みマクロ
機能テストマクロ
生文字列リテラル [N2442]
範囲for文 [N2930]
継承コンストラクタ [N2540]
関数のdefault/delete宣言 [N2346]
非静的メンバ変数の初期化 [N2756]
C++ (廃案)
処理系
コンパイラの実装状況
C++国際標準規格
標準規格と処理系
外部ライブラリ
テーマ別解説
ADLを無効にする関数定義
Hidden Friends
_at_thread_exit系の関数が存在している理由
使用できるロケール文字列
条件変数の利用方法
標準ライブラリにおける、関数にnoexceptを付けない条件
コミュニティリスト
スタイル
はじめてのコントリビュート
2023年 貢献ポイント
class_name,page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
class_name,page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
class_name,page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
cpprefjpでのMarkdown記法の制限と拡張
cpprefjpにおける注釈・出典の貼り方
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title ((1行目の見出し1はページのタイトルです。修飾なしで記載してください)
page_title (1行目の見出し1はページのタイトルです。修飾なしで記載してください)
ディレクトリ構造
ページファイル名の付け方
乱数分布の図を作る方法
module_name
編集方針