C++1z 属性の名前空間指定に繰り返しをなくす

標準外の属性は、名前空間内に定義されている場合があります (例として、GCCが定義している属性はgnu名前空間に属している)。属性指定の文脈でその名前空間を何度も書かなくてよいように、名前空間を省略するための機能がC++1zで入ります。

[[ using CC: opt(1), debug ]] void f() {}
  // [[CC::opt(1), CC::debug]] void f() {} と同じ意味

using指定できる名前空間は、ひとつだけのようです。

属性名前空間に対するusingの意味としては、「指定された属性がusingされた名前空間に属していればそれを使用する」というものになります。

参照

お断り

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