使用 c++17 编译代码时出现异常错误 [duplicate]

Exception Error while compiling code with c++17 [duplicate]

提问人:Soo 提问时间:10/9/2023 最后编辑:HolyBlackCatSoo 更新时间:10/9/2023 访问量:46

问:

请考虑以下代码:

template<typename T> void mySort(Vector<T> *v, bool type) throw(const char *){
  v->sort(mode);
}

当我使用 C++ 编译器(Ubuntu 22.04 LTS 上的 gcc 11.4)编译上述内容时,我收到以下错误。

error: ISO C++17 does not allow dynamic exception specifications
   35 | template<typename T> void mySort(Vector<T> *v,bool type) throw(const char *){
      |                                                         ^~~~~

如果我从代码中删除,编译错误就会消失。 这是正确的修复吗?throw(const char *)

C++ 异常 C++17

评论

4赞 UnholySheep 10/9/2023
是的,动态异常规范已在 C++17: en.cppreference.com/w/cpp/language/except_spec 中删除
1赞 Some programmer dude 10/9/2023
它们在 C++ 11 中已被弃用。
4赞 HolyBlackCat 10/9/2023
题外话:扔掉任何不是派生的东西通常是一个坏主意。std::exception

答: 暂无答案