Commit Graph

87 Commits

Author SHA1 Message Date
Ion Gaztañaga
225e2da77e Revised noexcept expressions of default and move constructors in all containers. 2016-08-01 23:49:51 +02:00
Ion Gaztañaga
b6d3906895 Use value-initialized pointers when null is required, as conversion from literal 0 is not guaranteed in smart pointers. 2016-07-31 23:16:08 +02:00
Pavel A. Lebedev
0b75df9920 Allow reuse of buffer in reserve with v2 allocator
allocation_command uses expand_{fwd,bwd} flags and its result is later compared with the old pointer, but the old pointer was not passed for reuse.
2016-07-16 18:52:10 +03:00
Ion Gaztañaga
132e57a348 Fixes Trac #12177 ("vector::priv_merge uses unqualified uintptr_t") 2016-05-13 23:50:34 +02:00
Ion Gaztañaga
873daf9a0c Fixed bug Trac #11170 2016-05-13 22:17:03 +02:00
Ion Gaztañaga
3e82a27917 Fixes Trac #11912: "flat_map use of vector::priv_forward_range_insert_expand_backwards may cause move with same source" 2016-02-24 22:27:53 +01:00
Ion Gaztañaga
c894ddf5a5 Use SFINAE in range constructors to detect iterators 2015-12-25 13:24:27 +01:00
Ion Gaztañaga
75f7c8fa73 Introduced BOOST_CONTAINER_FORCEINLINE so that mandatory inlining can be disabled selectively 2015-12-24 10:22:38 +01:00
Ion Gaztañaga
08e768f1d8 Fix comment about self-assignment 2015-11-06 21:49:55 +01:00
Ion Gaztañaga
d517bf46a8 - Simplified code using new priv_raw_begin(), renamed back_raw to priv_back_raw to match it.
- Avoid dynamic allocation in priv_merge when there is enough capacity for new elements.
2015-10-12 18:57:44 +02:00
Ion Gaztañaga
85b2ed509b Added debug assertions via BOOST_ASSERT to check preconditions in several members. All checks are O(1) 2015-09-18 14:39:17 +02:00
Ion Gaztañaga
7071fbc7d8 Fixed unused argument warning in swap_resources().
Fixed changelog copy-paste error.
2015-09-10 12:09:08 +02:00
Ion Gaztañaga
f1f97518d3 Fixed Track #11627 and #11628 2015-09-09 09:48:09 +02:00
Ion Gaztañaga
a91f6d317b Fixed wrong call to vector::merge_unique in insert_unique and used placement construction in priv_merge_in_new_buffer 2015-07-21 23:40:52 +02:00
Ion Gaztañaga
f02f5ec21f fix bug when erasing last elements 2015-06-04 11:40:46 +02:00
Ion Gaztañaga
3246e11ca2 Added new experimental merge functions to speed up flat_xxx range insertion 2015-04-14 15:22:06 +02:00
Ion Gaztañaga
ad54608d78 Fix Trac #11139 2015-03-31 11:23:14 +02:00
Ion Gaztañaga
e5f069da2b Reenginered partially propagable allocator support in vector. storage_is_unpropagable is now the basic building block, which is simpler and less error-prone. 2015-03-01 22:25:27 +01:00
Ion Gaztañaga
8cdfec7890 Add experimental small_vector class 2015-02-26 00:35:59 +01:00
Ion Gaztañaga
10d027aa9c Include boost/config.hpp before testinG BOOST_HAS_PRAGMA_ONCE. 2015-02-02 15:26:53 +01:00
Ion Gaztañaga
b786c8f716 Replaced BOOST_CONTIANER_NOEXCEPT with BOOST_NOEXCEPT 2015-01-28 22:11:00 +01:00
Ion Gaztañaga
9fede24d7e Replace BOOST_MOVE_IMPDEF with BOOST_CONTAINER_IMPDEF 2015-01-26 00:33:40 +01:00
Ion Gaztañaga
ef7137a945 Replace BOOST_MOVE_IMPDEF with BOOST_CONTAINER_IMPDEF 2015-01-26 00:30:01 +01:00
Ion Gaztañaga
cb732a22be Replace BOOST_MOVE_IMPDEF with BOOST_CONTAINER_IMPDEF 2015-01-26 00:14:35 +01:00
Ion Gaztañaga
dbafd61d4d updated move assignments and swap operations to "N4258: Cleaning-up noexcept in the Library, Rev 3" with some customizations. 2015-01-19 00:18:44 +01:00
Ion Gaztañaga
a322203a89 Replaced _MSC_VER with BOOST_HAS_PRAGMA_ONCE before #pragma once. 2015-01-10 12:50:17 +01:00
Ion Gaztañaga
64026d26c2 Correctly initialize vector_value_traits_base<T>::trivial_dctr_after_move 2015-01-09 21:20:24 +01:00
Ion Gaztañaga
360957a797 Massive dependency reduction. Removed dependency on several boost libraries and standard C++ headers. 2015-01-02 19:34:21 +01:00
Ion Gaztañaga
955248b739 Replace "Allocator" template parameter with "A", according to the standard. 2014-12-11 22:01:58 +01:00
Ion Gaztañaga
32418cab5f Use boost::adl_move_swap instead of custom swap or std::swap for performance and compatibility reasons. 2014-11-28 15:41:44 +01:00
Ion Gaztañaga
7971dc6602 Refactored uses of <iterator> and <algorithm> to avoid dependencies where possible. 2014-11-26 07:08:06 +01:00
Ion Gaztañaga
d514c1ab66 Refactored comparison functors to reuse compare_functors.hpp classes 2014-11-23 10:07:12 +01:00
Ion Gaztañaga
e6d19fb408 Fixed in bug in vector::operator== 2014-11-09 21:06:36 +01:00
Ion Gaztañaga
6f1f162cb3 - Added nth and index_of.
- Used BOOST_MOVE_BASE
2014-11-01 20:03:25 +01:00
Ion Gaztañaga
d19b012d53 Reduced include dependencies:
- Replaced boost/move/move.hpp with boost/move/utility_core.hpp
- Replaces <new> with placement_new.hpp
- Removed some unneeded std includes.
2014-09-26 08:12:40 +02:00
Ion Gaztañaga
3af96e0801 Implements N3644.
- Avoid deriving from std::iterator_traits as iterators become too fat.
- Use intrusive's reverse_iterator some std::reverse_iterator-s don't value initialize base.
2014-09-24 16:09:56 +02:00
Ion Gaztañaga
f5e678fc70 Remove warning of unused variable. 2014-09-22 22:31:34 +02:00
Ion Gaztañaga
3bbb0bbe0e Fixed wrong BOOST_CONTAINER_VECTOR_ALLOC_STATS comments in vector_alloc_base, they should go to the derived vector class.
Fixed error in void assign(FwdIt first, FwdIt last) when fwd expansion occurs, capacity was not being updated.
Optimized erasure when the type has_trivial_destructor_after_move.
Simplified a bit backwards expansion code.
Optimized priv_uninitialized_construct_at_end calling memmove-aware functions instead of using a hand-written loop
2014-09-21 23:57:23 +02:00
Ion Gaztañaga
d2bd31e4d0 Add new documentation macros and tested in vector. 2014-09-20 17:28:41 +02:00
Ion Gaztañaga
3025cc41b6 Replace "boost/move/utility.hpp" with "boost/move/utility_core.hpp" to minimize dependencies. 2014-09-17 23:36:23 +02:00
Ion Gaztañaga
5313086d54 Updated position insertion code.
Fixed backwards expansion calling too many destructors nd added more tests to detect similar errors.
2014-09-17 21:52:34 +02:00
Robert Matusewicz
ac4dde2c6e add std::initializer_list support for boost::container::vector 2014-08-15 20:25:16 +02:00
Ion Gaztañaga
819b365f5e Fixed unqualified iterator_to_pointer & to_raw_pointer calls that were causing compilation problems due to ADL. 2014-06-16 00:23:19 +02:00
Ion Gaztañaga
8c1bfe2881 Removed trailing whitespaces 2014-05-28 15:50:13 +02:00
Ion Gaztañaga
9b25c7134e * Fixed BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment) missing ::value
* Optimized insert_equal(ordered_range_t,...) and insert_unique(ordered_unique_range_t, ...) for elements to be inserted in the end.

* Added range insertion overload (non-standard extension) to vector taking the number of elements to avoid reiterations with std::distance.
2014-04-23 23:18:18 +02:00
Ion Gaztañaga
0b720f82b4 Fixed #9916: "Allocator propagation incorrect in the assignment operator of most".
Fixed #9932: "Missing assignment operator from related static_vector".
Added missing details from issue #9915
2014-04-21 13:59:49 +02:00
Ion Gaztañaga
bffd6c036c Fixes #9915.
Uses intrusive is_convertible in MSVC compilers.
Removes some throw conditions in the documentation produced by the allocator copy constructor (as the standard requires no-throw guarantee for those).
2014-04-17 00:06:59 +02:00
Ion Gaztañaga
a4c0188173 Divided set benchmark in several smaller benchmark files 2014-02-06 11:13:22 +01:00
Ion Gaztañaga
4872931d29 Documented template parameters. 2014-01-05 22:25:12 +01:00
Ion Gaztañaga
2489010881 Document comparison operators for non tree associative containers. 2014-01-03 12:43:03 +01:00