changed BOOST_NOEXCEPT to BOOST_NOEXCEPT_OR_NOTHROW