C++1z 使用しない可能性のある変数に対する警告を抑制するための[[maybe_unused]]属性

関数void f(int a) {}のパラメータaのように、実行時に使用しない可能性のある識別子は、コンパイル時に警告が出力されることがあります。

使用しないことが意図したものであることをコンパイラに伝えて警告を抑制するために、C++1zから[[maybe_unused]]属性が導入されます。

void f([[maybe_unused]] int a) {}

この属性は、以下の要素に対して指定できます:

  • クラスの宣言
  • 型の別名宣言
  • 変数の宣言
  • 非静的メンバ変数の宣言
  • 関数の宣言
  • 列挙型の宣言
  • 列挙子

この属性は、以下のような状況で有効活用できるでしょう:

  • シリアライズのバージョンパラメータ (アップデートでシリアライズ対象が増減しない限り、バージョンパラメータは使用しない)
  • assertマクロでのみ使用するパラメータ (リリースモードでのみ警告が出力されるのを抑制)

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。