
From: Vladimir Prus Emil Dotchevski wrote:
<robert.kawulak@gmail.com> wrote:
From: Hochhaus, Andrew a) throw exceptions with the "raw" throw keyword [instead of BOOST_THROW_EXCEPTION or boost::throw_exception] b) use try ... catch blocks without "#ifnef BOOST_NO_EXCEPTIONS" guards
Wouldn't it be a good idea to add checks for these to the inspect tool? Also, non-empty exception specifications are discouraged by Boost guidelines - should appropriate checks be added too?
+1
I don't think that Boost libraries are required to support non-conforming compilers or operation modes of compilers, therefore adding inspect check for a workaround for such non-comforming behaviour would be wrong, I think.
For try/catch blocks you're right. As to BOOST_THROW_EXCEPTION, it is not only about supporting non-conforming compilers. It is a customisation point for exception handling behaviour of Boost libraries just like BOOST_ASSERT is for assert, so it is important that it's used consistently in all Boost libraries to make it make sense. It also automatically adds useful exception origin information like file/line/function, which makes debugging programs using Boost faster and easier. I think using BOOST_THROW_EXCEPTION should be added to the Boost guidelines page in the first place, but Boost.Inspect should also enforce this. As to exception specifications, IIRC this has nothing to do with non-conforming compilers - it is a general C++ style guideline and Boost guidelines page also recommends it. Best regards, Robert