例外が使えない環境用のマクロ
boost/detail/no_exceptions_support.hpp
に、try/catchを例外が使えない環境でif/elseに置き換えてくれるマクロがあります。
(detail以下なので注意)
ヘッダに説明が書かれていますが、以下のように書くと
void foo() { BOOST_TRY { ... } BOOST_CATCH(const std::bad_alloc&) { ... BOOST_RETHROW } BOOST_CATCH(const std::exception& e) { ... } BOOST_CATCH_END }
例外が使える環境では以下のように置き換えられ、
void foo() { { try { ... } catch (const std::bad_alloc&) { ... throw; } catch (const std::exception& e) { ... } } }
例外が使えない環境では以下のようにif/elseに置き換えられます。
void foo() { { if(true) { ... } else if (false) { ... } else if (false) { ... } } }