我知道除了其他东西(比如auto_ptr)之外,C ++ 11中已经不推荐使用异常规范。
有没有办法从g ++ 4.8获得以下代码的警告?
struct F{
void foo() throw (int){}
};
int main()
{
}
我已尝试使用 -Wall -pedantic -Wextra -Wdeprecated-declarations ,但没有任何成功。
答案 0 :(得分:3)
您可以使用
class __attribute__((deprecated)) old_style_throw_specification;
class old_style_throw_specification {};
#define throw(...) throw(old_style_throw_specification, __VA_ARGS__)
或者如果你需要支持空掷规格(感谢@ John5342指出这一点),你可以使用
#define throw(...) throw(old_style_throw_specification, ##__VA_ARGS__)
对于宏,但是您需要使用GNU扩展进行编译:{{1}}因为上面的内容不是严格合法的C ++ 11。