cpp-attributes

C11标准中的新语法,用于让程序员在代码中提供额外信息

void f [[ noreturn ]] () // f() 永不返回
{
throw "error"; // 虽然不得返回,但可以抛出异常
}

struct foo* f [[carries_dependency]] (int i); // 编译优化指示
int* g(int* x, int* y [[carries_dependency]]);

属性被放置在两个双重中括号“[[…]]”之间。目前,noreturn和carries_dependency是C++11标准中仅有的两个通用属性。