I am curious about the rationale behind noexcept in the C++0x FCD. throw(X) was deprecated, but noexcept seems to do the same thing. Is there a reason that noexcept isn’t checked at compile time? It seems that it would be better if these functions were checked statically that they only called throwing functions within a try block.
I am curious about the rationale behind noexcept in the C++0x FCD . throw(X)
Share
If I remember throw has been deprecated because there is no way to specify all the exceptions a template function can throw. Even for non-template functions you will need the throw clause because you have added some traces.
On the other hand the compiler can optimize code that doesn’t throw exceptions. See “The Debate on noexcept, Part I” (along with parts II and III) for a detailed discussion. The main point seems to be: