It is better to support copy-initialization with default constructor. cf. LWG Issue 2193. Default constructors for standard library containers are explicit.
On MSVC and compatible compilers popcnt is now enabled if it is known at
compile time that the target CPU supports popcnt instruction. Unfortunately,
MSVC does not have a predefined macro specifically for popcnt, so we have
to test for AVX instead. __POPCNT__ is still tested in case clang or user
defines it.
For MSVC, the 64-bit popcount is now also implemented on 32-bit targets by
issuing two 32-bit popcnt instructions. For gcc and compatible compilers,
16-bit popcount implementation is provided, which is better than the generic
popcount implementation, but still slower than byte-wise do_count.
The do_count algorithm implementations have been improved by leveraging
instruction level parallelism better, which gives 0 to 27% improvement and
no regressions.
Also made code formatting more consistent and reduced code duplication between
do_count implementations.
* Add set(pos, len) function to change sequences
* Add reset(pos, len) function to clear sequences
* Add flip(pos, len) function to flip sequences
* Add custom range operations
This implemenents non-intrusive serialization support to dynamic_bitset<> based on Boost Serialization
- it supports archives that require named elements
- it gets private member access using a nested friend class (to decouple the interface entirely)
- relies on boost/serialization/vector.hpp for actual implementation
clang-3.5 trunk 201163 and OS X's clang (not sure which version)
report -Wsign-conversion warnings with this header. This patch fixes
them.
https://svn.boost.org/trac/boost/ticket/9725
Signed-off-by: Thomas Klausner <tk@giga.or.at>
Instead of masking all bits in the current block that were already
visited and then finding the lowest remaining bit, it shifts the current
block directly to the first unvisited bit and identifies the lowest
set bit.
It requires fewer operations that the original implementation and should
be faster.
See https://svn.boost.org/trac/boost/ticket/5159.
I think the recent changes in trunk and release were for the same problem. But
I'm not sure so I've merged them together. Hopefully, the release branch might
fix the Intel C++ errors as well.
------------------------------------------------------------------------
r52960 | dgregor | 2009-05-13 07:11:03 +0100 (Wed, 13 May 2009) | 1 line
Use enum constants rather than local variables for integral constants. Should fix dynamic_bitset failures on GCC 4.3.x
------------------------------------------------------------------------
[SVN r53050]
* removed use of BOOST_WORKAROUND in #if for gcc bug c++/8419, as recent
changes to the implementation of BOOST_WORKAROUND broke its usage with
arguments such as ( (__GNUC__) * 100 * 100 + (__GNUC_MINOR__) * 100 )
[SVN r49586]
* removed one of the workarounds for VC++ <= 7.0 (we don't run tests on
those compilers, anymore, so we don't really know if the library still
works with them); other such workarounds exist, though: removing them
involves heavy refactoring and is probably not worth the corresponding
risk of destabilization; comments have been added about this latter point
* comment fixes in detail/dynamic_bitset.hpp
[SVN r49345]