C++ 从C+中删除noexcept+;函数,如何处理调用它的noexcept函数?

C++ 从C+中删除noexcept+;函数,如何处理调用它的noexcept函数?,c++,c++11,refactoring,automated-refactoring,noexcept,C++,C++11,Refactoring,Automated Refactoring,Noexcept,假设我的代码中有一个标记为noexcept的foo函数。许多其他函数调用foo,其中许多函数也标记为noexcept 现在假设我必须调整foo,现在它可以抛出异常,所以它不再是noexcept 调用foo的所有函数都必须删除noexcept,是否正确 我该如何找到所有调用foo的函数?有没有比使用我的文本编辑器进行普通搜索更好的方法 通过对规范的搜索,似乎调用潜在抛出函数的函数实际上可以具有noexcept说明符。如果异常由foo引发,并且被另一个标记为noexcept的函数调用,则该异常将

假设我的代码中有一个标记为
noexcept
foo
函数。许多其他函数调用
foo
,其中许多函数也标记为
noexcept

现在假设我必须调整
foo
,现在它可以抛出异常,所以它不再是
noexcept

  • 调用
    foo
    的所有函数都必须删除
    noexcept
    ,是否正确

  • 我该如何找到所有调用
    foo
    的函数?有没有比使用我的文本编辑器进行普通搜索更好的方法

  • 通过对规范的搜索,似乎调用潜在抛出函数的函数实际上可以具有noexcept说明符。如果异常由
    foo
    引发,并且被另一个标记为
    noexcept
    的函数调用,则该异常将导致调用。因此,根据您是否希望传播异常,您不需要删除所有
    noexcept
    说明符。但是,如果希望传播异常,则可能需要删除这些
    noexcept
    说明符

  • 在我脑海中,我认为最好的方法是使用文本编辑器进行搜索,不过,也许其他人有更好的重构方法。而且,IDE绝对可以轻松地处理主要的重构

  • 通过对规范的搜索,似乎调用潜在抛出函数的函数实际上可以具有noexcept说明符。如果异常由
    foo
    引发,并且被另一个标记为
    noexcept
    的函数调用,则该异常将导致调用。因此,根据您是否希望传播异常,您不需要删除所有
    noexcept
    说明符。但是,如果希望传播异常,则可能需要删除这些
    noexcept
    说明符

  • 在我脑海中,我认为最好的方法是使用文本编辑器进行搜索,不过,也许其他人有更好的重构方法。而且,IDE绝对可以轻松地处理主要的重构


  • 1:除非他们自己不处理异常。2:使用IDE1。。。自行处理异常,或乐意终止异常。2.使用IDE或注释掉函数,看看有什么中断-有你的调用者(假设没有重载/转换等允许它编译)。请注意,“注释掉函数,看看有什么中断”不是在存在重载的情况下查找调用站点的可靠方法,因为调用方仍然可以通过解析到次优匹配来编译。Visual Studio的代码分析工具将告诉您是否从noexcept函数调用非noexcept函数。@BenVoigt:我注意到了。1:只有当它们自己不处理异常时。2:使用IDE1。。。自行处理异常,或乐意终止异常。2.使用IDE或注释掉函数,看看有什么中断-有你的调用者(假设没有重载/转换等允许它编译)。请注意,“注释掉函数,看看有什么中断”不是在存在重载的情况下查找调用站点的可靠方法,因为调用方仍然可以通过解析到次优匹配来编译。Visual Studio的代码分析工具将告诉您是否从noexcept函数调用非noexcept函数。@BenVoigt:我确实注意到了这一点。