標準外の属性は、名前空間内に定義されている場合があります (例として、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の以下の階層の下に解説ページを用意する予定です。