C++ に存在する属性の一覧です。
属性 (attribute) は、クラスや関数、変数など、ソースコード上にあるさまざまな構成要素に対して、追加情報を与えるための構文です。構成要素の手前の辺りに以下の文法で記述します。
[[属性名]]
[[属性名(実引数の並び)]]
属性は、C++ の標準規格が定めたものと、コンパイラ作成者が定義したものが存在します。ほかのプログラミング言語では、プログラマーが新たな属性を定義できる場合がありますが、C++ では今のところ新しい属性を追加することはできません。
名前 | 指定できる構成要素 | 概要 | 解説ページ |
---|---|---|---|
noreturn | 関数の宣言 | 関数が呼び出し元に帰らないことを示す | 「アサート」 |
carries_dependency | 関数の宣言、仮引数、ラムダ式の引数 | 並行処理のアトミック操作において、関数の内外にメモリ操作の依存関係が伝播することを示す |
名前 | 指定できる構成要素 | 概要 | 解説ページ |
---|---|---|---|
deprecated | クラス、typedef名、変数、非静的なデータメンバ、関数、列挙型、テンプレートの特殊化 (C++17) 名前空間、列挙子 |
非推奨の機能であることを示す | |
deprecated(文字列リテラル) | クラス、typedef名、変数、非静的なデータメンバ、関数、列挙型、テンプレートの特殊化 (C++17) 名前空間、列挙子 |
非推奨の機能であることを示す。その理由などを引数で与えられる |
名前 | 指定できる構成要素 | 概要 | 解説ページ |
---|---|---|---|
fallthrough | switch文内の空文(各case の最後の式) | 意図的なフォールスルーであることを示す | 「switch文」 |
maybe_unused | クラス、typedef名、変数、非静的なデータメンバ、関数、列挙型、列挙子 (C++20) 構造化束縛 |
未使用であることを示す | |
nodiscard | 関数の宣言、クラス、列挙型 | 戻り値を捨ててはならないことを示す |
名前 | 指定できる構成要素 | 概要 | 解説ページ |
---|---|---|---|
nodiscard(文字列リテラル) | 関数の宣言、クラス、列挙型 | 戻り値を捨ててはならないことを示す。その理由などを引数で与えられる | |
likely | ラベル、文(宣言文を除く) | その文に分岐する確率が、ほかの分岐よりも高いというヒントをコンパイラに与える | |
unlikely | ラベル、文(宣言文を除く) | その文に分岐する確率が、ほかの分岐よりも低いというヒントをコンパイラに与える | |
no_unique_address | 非静的なデータメンバ | 非静的なデータメンバがユニークなメモリアドレスを持たなくてよいことを示す |
名前 | 指定できる構成要素 | 概要 | 解説ページ |
---|---|---|---|
assume(式) | 空文 | ある時点において満たしているべき仮定を、コンパイラにヒントとして与える |
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |