最終更新日時: 2026年01月13日 17時01分47秒 (JST)
Akira Takahashi が更新

履歴 編集

class
<header_name>

# std::page_title (1行目の見出し1はページのタイトルです。修飾なしで記載してください)(C++17)

(cpprefjpを編集するには および cpprefjpでのMarkdown記法の制限と拡張 を先に読んで下さい。)

( サンプルコードは文章中のどの部分で書いても大丈夫です。閲覧者の理解を助けるために必要だと感じたところで入れてください。 その際拡張構文である`example`タグをルールに従って付け、コンパイル・実行可能にすることを検討してください。 )

    namespace std {
      class definition; // クラスの宣言を記述します。
    }

## 概要

(ここには、クラスの概要を記述します。必須事項です。)

(必要な項目を省略する場合には、「(執筆中)」と書いておいてください。)

## テンプレートパラメータ制約

(ここには、クラスのテンプレートパラメータに対する制約を記載します。SFINAE-friendlyな関数の条件、制約テンプレートによる条件などを記載します。)

## 適格要件

(ここには、満たさなければプログラムが不適格となる要件を記載します。`static_assert`に相当します。規格ではMandatesの項目です。)

## この機能が必要になった背景・経緯

(ここには、その機能が必要になった背景や経緯を記述します。その機能で解決したい問題は何だったのかは、ユーザーがその言語機能を実際に使う上で重要な情報となります。余裕があったら書いてください)

## メンバ関数

### 構築・破棄

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ |
`(destructor)` | デストラクタ |
`operator=` | 代入演算子 |
`function_name` | 説明 |

## 静的メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---

## 非メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---

### 比較演算子

(比較演算子がデフォルト定義され、個別ページを作らない場合の記述例。オペランドの組み合わせ数が多い場合には、個別ページを作ることを推奨する)

名前 | 説明 | 対応バージョン
--- | --- | ---
`bool operator==(const X&, const X&) = default;` | 等値比較 |
`bool operator!=(const X&, const X&);` | 非等値比較 (`==`により使用可能) |
`strong_ordering operator<=>(const X&, const X&) = default;` | 三方比較 |
`bool operator<(const X&, const X&);` | 左辺が右辺より小さいかを判定する (`<=>`により使用可能) |
`bool operator<=(const X&, const X&);` | 左辺が右辺以下を判定する (`<=>`により使用可能) |
`bool operator>(const X&, const X&);` | 左辺が右辺より大きいかを判定する (`<=>`により使用可能) |
`bool operator>=(const X&, const X&);` | 左辺が右辺以上かを判定する (`<=>`により使用可能) |

## 非メンバ（Hidden friends）関数

(`friend`付きメンバ関数はこの見出し以下で記載する。`counted_iterator`を例として参照)

名前 | 説明 | 対応バージョン
--- | --- | ---
`swap` | 2つのオブジェクトを入れ替える |

## 例

    // (ここには、クラスを解説するための、サンプルコードを記述します。)
    // (インクルードとmain()関数を含む、実行可能なサンプルコードを記述してください。そのようなコードブロックにはexampleタグを付けます。)

    #include <iostream>

    int main()
    {
      int variable = 0;
      std::cout << variable << std::endl;
    }

(コードブロック中の識別子に、文字色を付ける例です。)

### 出力

    0

(ここには、サンプルコードの実行結果を記述します。何も出力がない場合は、項目を削除せず、空の出力にしてください。)
(実行結果が処理系・実行環境によって異なる場合は、項目名を「出力例」に変更し、可能であればその理由も併記してください。)

## バージョン

### 言語

- C++11

### 処理系

- Clang: 1.9 ✅, 2.9 ✅, 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅
- GCC: 4.3.6 ✅, 4.4.7 ✅, 4.5.3 ✅, 4.6.3 ✅, 4.7.2 ✅, 4.8.1 ✅
- ICC: 10.1 ✅, 11.0 ✅, 11.1 ✅, 12.0 ✅
- Visual C++: 2003 ✅, 2005 ✅, 2008 ✅, 2010 ✅, 2012 ✅

(ここには、その機能が存在する言語のバージョンと、確認がとれたコンパイラとそのバージョンを記述します。)
(これらの項目を削除した場合、C++03のあらゆる環境で使用できることを意味します。)

## 関連項目

(ここには、その機能と関連のあるcpprefjpサイト内の項目へのリンクを記述します。とくに必要がないと判断した場合、項目を削除してください。)

## 参照

(ここには、その関数・変数・定数を理解するにあたっての参考資料や、関連する機能へのリンクを記述します。とくに必要がないと判断した場合、項目を削除してください。)

- P0788R3 Standard Library Specification in a Concepts and Contracts World