Subject: [Boost-bugs] [Boost C++ Libraries] #7523: Patch that adds missing BOOST_NOEXCEPT to noexcept functions
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-10-17 17:19:50
#7523: Patch that adds missing BOOST_NOEXCEPT to noexcept functions
-------------------------------------+--------------------------------------
Reporter: apolukhin | Owner: pdimov
Type: Feature Requests | Status: new
Milestone: To Be Determined | Component: smart_ptr
Version: Boost Development Trunk | Severity: Optimization
Keywords: |
-------------------------------------+--------------------------------------
This is a trivial patch, that marks function with BOOST_NOEXCEPT if:
* function is commented as "// newer throws" and has no BOOST_ASSERT and
has no user specified template class destructor call
* or function is extremely simple (consist of a few lines of code that are
guaranteed not to throw)
* or function has only a call to noexcept function (like
`swap(shared_ptr<T>& v1, shared_ptr<T>& v2) { v1.swap(v2);}` )
Applying this patch will dramatically increase performance of smart
pointers on modern compilers (because of [http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html N3050], STL containers
can not move smart pointers if move assignment and move constructors are
not marked with noexcept). It will also reduce the size of compiled code.
Patch is tested on GCC-4.6 (with and without -std=c++0x flag) and MSVC2012
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/7523> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:10 UTC