
"Daryle Walker" <darylew@hotmail.com> wrote
You might want to use:
#define BOOST_INDEXED_SET_CATCH(x) if(true) ; else
instead. This way, any dangling "else" in the outside code doesn't get attached to your macro by mistake.
You found real problem in current macros! For example: if (...) BOOST_TRY { ... } BOOST_CATCH(...) { ... } else { ... } would behave differently depending on BOOST_NO_EXCEPTIONS. Here are macros resistant to this problem: #if !(defined BOOST_NO_EXCEPTIONS) # define BOOST_TRY try # define BOOST_CATCH(x) catch(x) # define BOOST_RETHROW throw #else # if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) # define BOOST_TRY if ("") # else # define BOOST_TRY if (1) # endif # define BOOST_CATCH(x) else # define BOOST_RETHROW #endif /Pavel