最終更新日時(UTC):
が更新

履歴 編集

ディレクトリ構造

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_codestd::error_conditionの比較演算子は、クラス階層ではなくヘッダ階層としている。これは所属関係がむずかしいためである

コンセプト階層

  • コンセプトによってオーバーロード・特殊化されている場合は、コンセプトの階層を作って、その下に置く。機能の列挙としてはヘッダページで行う

名前空間階層

  • 名前空間の階層は基本的に導入しない。例外は以下: