Does adding `noexcept(false)` benefit the code in any way?

后端 未结 2 904
野性不改
野性不改 2021-02-12 11:10

Recently in my code I have been explicitly writing noexcept(false) on functions that I know do throw exceptions, mainly for people reading the code. However, I am w

2条回答
  •  爱一瞬间的悲伤
    2021-02-12 11:46

    In his book More Exceptional C++, Herb Sutter has the following snippet (pp. 130):

    The right answer to the Example 19-1 is much simpler:

    // Example 19-4: The right solution
    //
    T::~T() /* throw() */
    {
     // ... code that won't throw ...
    }
    

    Example 19-4 demonstrates how to make a design decision instead of waffling.

    Note that the throw() throws-nothing exception specification is only a comment. That's the style I've chosen to follow, in part because it turns out that exception specifications confer a lot less benefit than they're worth. Whether or not you decide to actually write the specification is a matter of taste.

    (emphasis mine)

    So, I feel I must point out that one of the leading experts in C++ exception-safe code seems to be against the whole concept of adding exception specifications for the compiler to use (but still leaving it in the code for the programmers to understand).

    Just thought it may be interesting info...

提交回复
热议问题