Ion Gaztañaga
d7eaedc1a9
Merge branch 'master' of https://github.com/garyfurnish/container into garyfurnish-master
2017-06-06 13:14:18 +02:00
Gary Furnish
e0aaf744a5
Fix integer rollover that triggers clang ubsan when U is unsigned
2017-06-05 18:18:38 -06:00
Ion Gaztañaga
d5aede745e
Unify std::binders and lambdas with custom binders
2017-05-26 22:31:26 +02:00
Ion Gaztañaga
ec91367383
Review all associative containers and implement a different constructor overload to avoid any unnecessary copy construction of the predicate or the allocator.
2017-05-16 16:29:49 +02:00
Mehdi Amini
40451e4bf7
Add variant of map constructors to avoid useless extra allocator copy when using initializer list
...
Many existing constructors have this form:
map(std::initializer_list<value_type> il, const Compare& comp = Compare(), const allocator_type& a = allocator_type())
The issue is that a temporary allocator_type is constructed, and
passed to the base class where it is used to copy-constructed the
rebound allocator.
This temporary allocator_type here is always destroyed at the end
of the map() constructor. For stateful allocators this is not
desirable.
The solution is to adopt what libc++ is doing and have to constructors:
map(std::initializer_list<value_type> il, const Compare& comp = Compare(), const allocator_type& a)
and
map(std::initializer_list<value_type> il, const Compare& comp = Compare())
This way, unless an allocator is provided by the client, no extra temporary
creation/destruction occurs.
2017-05-08 12:39:06 -07:00
Ion Gaztañaga
1d727753e2
Use directly boost::movelib::to_raw_pointer/iterator_to_raw_pointer
2017-04-07 16:07:00 +02:00
Ion Gaztañaga
d6749960fc
Implement extract_sequence and adopt_sequence for flat ordered associative containers
2017-04-05 16:06:31 +02:00
Ion Gaztañaga
cdb022fda2
Fix ambiguous constructor calls for piecewise_construct and Boost vs std tuples
2017-04-05 16:04:53 +02:00
Ion Gaztañaga
01d7c71ea8
Fix node_handle bugs:
...
-> Bad allocator destruction in swap
-> Wrong assertion in operator=
-> Make dangerous functions private
Added full testsuite.
2017-04-02 00:20:38 +02:00
Ion Gaztañaga
865c69bab7
Changed string_view interoperability to a templated solution in order to support also std::string_view.
...
Added missing members and testcases.
2017-02-21 14:27:18 +01:00
Ion Gaztañaga
1404933491
Delete unused hash table
2017-02-06 11:50:53 +01:00
Ion Gaztañaga
23e9e8b494
Fix copyright notice.
2017-01-12 14:58:44 +01:00
Ion Gaztañaga
f71fee5140
Merge branch 'inspection_report' of https://github.com/zerotypos-found/container into zerotypos-found-inspection_report
2017-01-12 14:53:20 +01:00
Ion Gaztañaga
79f5977688
Fixes Ticket #12749 container::pmr::polymorphic_allocator compilation error
2017-01-12 14:49:31 +01:00
zerotypos-found
7cb3a6fbe8
[inspection report] remove tabs and fix copyright notice format
2016-12-20 11:03:57 +09:00
Ion Gaztañaga
8141dbcbe6
Merge branch 'unused_variable' of https://github.com/maksqwe/container into maksqwe-unused_variable
2016-11-26 14:40:38 +01:00
Ion Gaztañaga
5e4a107e82
Fixes Ticket #12534 : flat_map fails to compile if included after type_traits is instantiated under gcc
2016-11-25 23:56:33 +01:00
Maks Naumov
e7f452bf91
Remove unused local variable
2016-11-17 00:02:29 +02:00
Ion Gaztañaga
764fcd88bf
Merge branch 'copy_move_algo__parameter_fix' of https://github.com/think-cell/container into think-cell-copy_move_algo__parameter_fix
2016-11-13 00:26:58 +01:00
Ion Gaztañaga
77f5d7218d
Avoid reference to null errors in sanitizers
2016-11-12 23:55:03 +01:00
Ion Gaztañaga
ede225c9d2
Disable forceinline for old compilers due to bugs.
2016-11-12 19:07:54 +01:00
Ion Gaztañaga
1f3174baa7
Make build_number_seq with O(logN) instantiations instead of O(N)
2016-11-12 19:07:34 +01:00
Ion Gaztañaga
0a719901b6
Avoid warnings of unused "piecewise_construct"
2016-11-12 19:06:44 +01:00
Ion Gaztañaga
d7bf947a4b
Fix iterator_from_iiterator not value initializing its parent iterator
2016-11-12 19:06:23 +01:00
Tobias Germer
3830745c9f
Fix parameter types in copy_move_algo.hpp: iterator_traits::difference_type -> allocator_traits::size_type
2016-10-19 14:13:46 +02:00
Tobias Germer
5ce1ad2611
Fix parameter type of uninitialized_copy_alloc_n_source()
2016-10-18 13:42:56 +02:00
Ion Gaztañaga
da17190798
Fix incomplete Trac #9689 ("Add piecewise_construct to boost::container") resolution. scoped_allocator_adaptor_test was missing pair construct overloads.
2016-09-06 14:05:46 +02:00
Ion Gaztañaga
f540b83ccd
* Implemented merge operations for associative containers.
...
* Update tree-based containers to changes done in Intrusive internal utilities in order to fix Trac 12432.
2016-09-03 00:03:42 +02:00
Ion Gaztañaga
9f9fdeaa9a
Adapt to Intrusive change that removed unneeded template parameters to tree_value_compare.
2016-08-29 16:53:17 +02:00
Ion Gaztañaga
4298d1984b
* Add missing extract() and insert(node_type) funtion to associative containers.
...
* Simplify select1st
2016-08-29 00:06:57 +02:00
Ion Gaztañaga
1467c51a4e
Implemented missing try_emplace member for maps.
2016-08-26 01:47:32 +02:00
Ion Gaztañaga
e1cb88b399
Add missing include for boost::forward
2016-08-24 02:19:58 +02:00
Ion Gaztañaga
db5c24e0e7
Fix piecewise_construct pair constructor for compilers with variadics and constructor forwarding. Current code unconditionally moves instead of forwarding.
2016-08-24 01:52:53 +02:00
Ion Gaztañaga
79a75f470e
Add piecewise_construct construction to internal pair.
2016-08-23 02:14:19 +02:00
Ion Gaztañaga
0b98372af5
Silence most vexing parse warnings in clang.
2016-08-23 02:13:56 +02:00
Ion Gaztañaga
eb42811079
Delegating constructors detection, as Boost.Config does not yet provide it.
2016-08-23 02:13:30 +02:00
Ion Gaztañaga
c7407e34f6
Replaced int with std::size_t when building indexes.
2016-08-23 02:13:03 +02:00
Ion Gaztañaga
2d6f781a2f
Implemented "insert_or_assign" for map-like containers.
2016-08-18 20:29:04 +02:00
Ion Gaztañaga
fb1be6fa75
Fix Trac #12117 ("flat_set constructor with ordered_unique_range") adding checks to constructors in debug mode
...
Fix typos on value_type checks in flat_[multi]map.
2016-08-15 23:22:57 +02:00
Ion Gaztañaga
324130703e
Fix incorrect header guards
2016-08-15 23:21:10 +02:00
Ion Gaztañaga
d5adae2eda
Fixes Trac #11802 ("Incorrect ordering after using insert() with ordered_range_t on a flat_multiset with a non-default sort order")
2016-08-12 00:43:16 +02:00
Ion Gaztañaga
37c1558a81
Fixed Trac #12256 (set<std::pair<int,int>>::insert cause compilation error in debug configuration in Visual Studio 2012)
2016-08-09 00:59:39 +02:00
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
153fd7f474
Add more is_class, is_class_or_union, is_enum specialization to pair to allow recursive containers and type traits intrinsics
2016-06-25 11:04:55 +02:00
Ion Gaztañaga
a52684beea
Some dispatch_uses_allocator overloads don't forward the allocator argument
2016-06-25 11:03:57 +02:00
Ion Gaztañaga
a7158c7975
Fixed Trac #12014 : "boost::container::set can not insert const (ref) range"
2016-02-24 10:13:07 +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
a3262c0ae7
Fix for Trac #11820 ("compiler error when using operator[] of map")
2015-12-24 01:14:10 +01:00
Ion Gaztañaga
c4505003c7
Minimize ifdef-ed code for BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN
2015-10-17 10:17:30 +02:00
Ion Gaztañaga
1d5c367d62
Use BOOST_MOVE_HELPERS_RETURN_SFINAE_BROKEN as some compilers prefer return type SFINAE while others don't support it.
2015-10-17 09:39:56 +02:00