lang
- cpp{version}.mdの形式で、各C++バージョンの言語機能ページを作る
- future.mdは、将来のC++で検討されている言語機能を記載するところである。導入予定だった機能が再検討になった場合などに使用する
- archive.mdは、廃案になったC++機能だが解説として残す価値のあるものがある場合に、記載するところである
reference / module
- reference階層は、ヘッダベースのライブラリリファレンスで、その階層直下にはヘッダページを置く
- module階層は、モジュールベースのライブラリリファレンスで、その階層直下にはモジュールページを置く
reference階層とmodule階層は上記以外は同じであるため、以下、共通のルールを書きます。
ヘッダ・モジュール階層
- ヘッダ・モジュール階層以下に、それに所属している機能のページを置く
- どのヘッダ・モジュールにも属さない機能の場合は、以下のように対応する
- 全体で使用する説明専用の機能は、仮のヘッダ
<exposition-only>
に属するものとして記載する
- 全体で使用する説明専用の機能は、仮のヘッダ
クラス階層
- クラスに属するメンバ関数と型は、クラス階層の下に置く
- オーバーロードを意図している関数、そのクラス向けに特殊化した機能も、クラス階層の下に置き、機能の列挙としてもクラスページで行う
- オーバーロードを意図している関数の例は以下:
- 非メンバ関数の演算子
std::get()
std::begin()
/std::end()
/std::data()
/std::size()
およびそれに類するものstd::swap()
std::erase()
/std::erase_if()
floor()
/ceil()
/round()
(chrono)
- 特殊な例として、
std::expected
では部分特殊化のためにクラス階層を分離している。これは各メンバ説明の差分が大きいためである
- オーバーロードを意図している関数の例は以下:
- 演算子オーバーロードは、
operator<<
(出力ストリームへの出力) とstd::operator>>
(入力ストリームからの入力) を除き、左辺のクラスに属するものとする- 特殊な例として、
std::error_code
とstd::error_condition
の比較演算子は、クラス階層ではなくヘッダ階層としている。これは所属関係がむずかしいためである
- 特殊な例として、
コンセプト階層
- コンセプトによってオーバーロード・特殊化されている場合は、コンセプトの階層を作って、その下に置く。機能の列挙としてはヘッダページで行う
名前空間階層
- 名前空間の階層は基本的に導入しない。例外は以下:
std::this_thread
- 名前空間に特殊な意味をもたせている