C++11では属性を指定する機能が入り、標準では以下の2つの属性が提供されました。
- noreturn : 関数が決して返らないことをコンパイラに伝える(警告消しなどの目的で使う)
- carries_dependency : アトミック操作のconsumeメモリオーダーにおいて、スコープを超えて依存性を持ち運ぶことをコンパイラに伝える(アトミックウェポン)
C++1yではこれに加えて、deprecated属性、つまりクラスや関数が非推奨であることをユーザーとコンパイラに伝えるための属性が提案されています。これは、「この機能は古いから新しいこっちを使ってください」というようなことをユーザーに提示する目的で使用するもので、Visual C++やGCCでは独自仕様の属性機能でかなり前から使われている機能でもあります。
参照:
N3394 deprecated attribute