Skip to content
Go back

C++:関数宣言(と属性とalignas)のチートシート

· Updated:
  • 宣言:template <parameter-list> requires-clause attr specifiers identifier attr (parameter-list) cv ref except attr-for-type -> trailing requires-clause
    • attr:関数に付与される属性
    • specifiers:指定子
      • inline, virtual, explicit, friend, constexpr, consteval, static, extern, auto, decltype, typename, const, volatileなど
    • cv:const, volatile
    • ref:&, &&
    • except:noexcept
    • attr-for-type:型に付与される属性?(詳細不明)
    • trailing:specifiersをautoとしたときの戻り値型
    • requires-clause:requires
  • 定義:declarator virt-specifier-seq function-body
    • declarator:宣言
    • virt-specifier-seq:overridefinal
    • function-body:{}try {} catch() {}= delete;= default;

おまけ:attributeの位置

  • 変数・関数:指定子の前、または、識別子の後
  • クラス・列挙体・名前空間:キーワードの後
  • 列挙子・エイリアス:識別子の後
  • 制御構文:キーワードの前
  • ラベル・文:それの前
    • [[likely]]はここ(ifから見ると後に付いているようにも見えるが)

おまけのおまけ

  • alignasの位置は属性と同じ(と考えて良いらしい)

参考文献