• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    コンセプト階層

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

    名前空間階層

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