属性: deprecated (C++14以上)
提供: cppreference.com
この属性付きで宣言された名前またはエンティティが非推奨である、つまり、使用することはできるけれども何らかの理由でおすすめできないことを表します。
構文
[[deprecated]]
|
(1) | |
[[deprecated( string-literal )]]
|
(2) | |
| string-literal | - | 非推奨の根拠を説明するためや代わりのエンティティを提案するために使用できるテキスト |
説明
この属性付きで宣言された名前またはエンティティの使用が許容されるけれども何らかの理由で推奨されないことを表します。 コンパイラは一般的にはそのような使用に対して警告を発します。 string-literal が指定されていれば、通常、それが警告に含まれます。
この属性は以下の名前またはエンティティの宣言で使用できます。
- クラス、構造体、共用体:
struct [[deprecated]] S; - typedef 名 (エイリアス宣言によって宣言されたものを含む):
[[deprecated]] typedef S* PS;、using PS [[deprecated]] = S*; - 変数 (静的データメンバを含む):
[[deprecated]] int x; - 非静的データメンバ:
union U { [[deprecated]] int n; }; - 関数:
[[deprecated]] void f(); - 名前空間:
namespace [[deprecated]] NS { int x; } - 列挙:
enum [[deprecated]] E {}; - 列挙子:
enum { A [[deprecated]], B [[deprecated]] = 42 }; - テンプレートの特殊化:
template<> struct [[deprecated]] X<int> {};
deprecated なしで宣言された名前を deprecated で再宣言しても構いません。 deprecated で宣言された名前をこの属性なしで再宣言しても deprecated は解除されません。
例
| This section is incomplete Reason: no example |