如何获取旧异常规范的警告

时间:2014-04-08 16:20:07

标签: c++ c++11 g++4.8 exception-specification

我知道除了其他东西(比如auto_ptr)之外,C ++ 11中已经不推荐使用异常规范。

有没有办法从g ++ 4.8获得以下代码的警告?

struct F{
    void foo() throw (int){}
};
int main()
{
}

我已尝试使用 -Wall -pedantic -Wextra -Wdeprecated-declarations ,但没有任何成功。

1 个答案:

答案 0 :(得分:3)

您可以使用

class __attribute__((deprecated)) old_style_throw_specification;
class old_style_throw_specification {};

#define throw(...) throw(old_style_throw_specification, __VA_ARGS__)

Live example

或者如果你需要支持空掷规格(感谢@ John5342指出这一点),你可以使用

#define throw(...) throw(old_style_throw_specification, ##__VA_ARGS__)

对于宏,但是您需要使用GNU扩展进行编译:{{1​​}}因为上面的内容不是严格合法的C ++ 11。

Live example