mirror of
https://github.com/boostorg/container.git
synced 2026-02-25 16:22:16 +00:00
cb1e6af53d48aeb32c3c41314763e781e9859599
This allows std::is_nothrow_swappable{,_with} to work properly.
This only touches user-facing classes, with the following exceptions:
- map,set: only doc changes (with a drive-by missing semicolon fix),
detail::tree which they derive from already forwards noexcept for swap.
- flat_set: only doc changes for flat_set and a change for
detail::flat_tree, which it derives from to get swap.
- static_vector: while this adds the forwarding, member static_vector::swap
is currently never noexcept, although it could be for noexcept-swappable
and noexcept-move-constructible elements.
- small_vector: there is no free swap, and member swap is never noexcept,
although it could be for noexcept-swappable and noexcept-move-
constructible elements. Swapping small_vectors of exact same type goes
through std::swap, which seems to get noexcept right, and small_vectors
of different sizes use swap for boost::container::vector, which fails
to detect when such swap could be noexcept. This patch doesn't touch
small_vector.
- scoped_allocator: neither member nor free swap are noexcept, although
they should be, and all other constructions/assignments/comparisons too,
as they only forward these operations to underlying allocators, which
are required to not throw exceptions for them. Only static_vector's
static_storage_allocator might throw for these and it shouldn't appear
in scoped_allocator. Unsure of the scope of changes needed or whether it
is even worth it, this patch doesn't touch scoped_allocator.
Fixes #141 ('small_vector does not propagate no throw properties of move operation of contained type')
Boost.Container
Boost.Container, part of collection of the Boost C++ Libraries, implements several well-known containers, including STL containers. The aim of the library is to offer advanced features not present in standard containers, to offer the latest standard draft features for compilers that don't comply with the latest C++ standard and to offer useful non-STL containers.
License
Distributed under the Boost Software License, Version 1.0.
Properties
- C++03
- Mostly header-only, library compilation is required for few features.
- Supports compiler modes without exceptions support (e.g.
-fno-exceptions).
Build Status
| Branch | Travis | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
|---|---|---|---|---|---|---|---|
master |
|||||||
develop |
Directories
| Name | Purpose |
|---|---|
doc |
documentation |
example |
examples |
include |
headers |
proj |
ide projects |
test |
unit tests |
More information
- Ask questions
- Report bugs: Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
- Submit your patches as pull requests against develop branch. Note that by submitting patches you agree to license your modifications under the Boost Software License, Version 1.0.
- Discussions about the library are held on the Boost developers mailing list. Be sure to read the discussion policy before posting and add the
[container]tag at the beginning of the subject line.
Description
Languages
C++
92.4%
C
7.4%
CMake
0.2%