mirror of
https://github.com/boostorg/container.git
synced 2025-08-03 06:24:26 +02:00
Merged from trunk
[SVN r79559]
This commit is contained in:
@@ -439,7 +439,7 @@ not constructed on the fly when auxiliary memory is needed).
|
|||||||
[section:scoped_allocator Scoped allocators]
|
[section:scoped_allocator Scoped allocators]
|
||||||
|
|
||||||
C++11 improves stateful allocators with the introduction of
|
C++11 improves stateful allocators with the introduction of
|
||||||
[@http://http://en.cppreference.com/w/cpp/memory/scoped_allocator_adaptor `std::scoped_allocator_adaptor`]
|
[@http://en.cppreference.com/w/cpp/memory/scoped_allocator_adaptor `std::scoped_allocator_adaptor`]
|
||||||
class template. `scoped_allocator_adaptor` is instantiated with one outer allocator and zero or more inner
|
class template. `scoped_allocator_adaptor` is instantiated with one outer allocator and zero or more inner
|
||||||
allocators.
|
allocators.
|
||||||
|
|
||||||
@@ -614,18 +614,30 @@ use [*Boost.Container]? There are several reasons for that:
|
|||||||
|
|
||||||
[section:release_notes Release Notes]
|
[section:release_notes Release Notes]
|
||||||
|
|
||||||
|
[section:release_notes_boost_1_51_00 Boost 1.51 Release]
|
||||||
|
|
||||||
|
* Fixed bugs
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/6763 #6763],
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/6803 #6803],
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/7114 #7114],
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/7103 #7103].
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/7123 #7123],
|
||||||
|
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
[section:release_notes_boost_1_50_00 Boost 1.50 Release]
|
[section:release_notes_boost_1_50_00 Boost 1.50 Release]
|
||||||
|
|
||||||
* Added Scoped Allocator Model support.
|
* Added Scoped Allocator Model support.
|
||||||
|
|
||||||
* Fixed bugs
|
* Fixed bugs
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/6533 #6533],
|
||||||
|
[@https://svn.boost.org/trac/boost/ticket/6536 #6536],
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6566 #6566],
|
[@https://svn.boost.org/trac/boost/ticket/6566 #6566],
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6575 #6575],
|
[@https://svn.boost.org/trac/boost/ticket/6575 #6575],
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6606 #6606],
|
[@https://svn.boost.org/trac/boost/ticket/6606 #6606],
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6615 #6615],
|
[@https://svn.boost.org/trac/boost/ticket/6615 #6615],
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6533 #6533],
|
|
||||||
[@https://svn.boost.org/trac/boost/ticket/6536 #6536],
|
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
|
|
||||||
|
@@ -36,4 +36,8 @@ check move if noexcept conditions in vector, deque and stable_vector
|
|||||||
|
|
||||||
Detect always equal or unequal allocators at compiler time. operator== returns true_type or false_type
|
Detect always equal or unequal allocators at compiler time. operator== returns true_type or false_type
|
||||||
|
|
||||||
change virtual functions with pointers to avoid template instantiation for every type
|
change virtual functions with pointers to avoid template instantiation for every type
|
||||||
|
|
||||||
|
Add hash for containers
|
||||||
|
|
||||||
|
Add std:: hashing support
|
@@ -203,6 +203,9 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\boost\container\scoped_allocator.hpp">
|
RelativePath="..\..\..\..\boost\container\scoped_allocator.hpp">
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\..\boost\container\scoped_allocator_fwd.hpp">
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\boost\container\set.hpp">
|
RelativePath="..\..\..\..\boost\container\set.hpp">
|
||||||
</File>
|
</File>
|
||||||
|
@@ -111,7 +111,7 @@ class dummy_test_allocator
|
|||||||
dummy_test_allocator(const dummy_test_allocator<T2> &)
|
dummy_test_allocator(const dummy_test_allocator<T2> &)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
pointer address(reference value)
|
pointer address(reference value)
|
||||||
{ return pointer(container_detail::addressof(value)); }
|
{ return pointer(container_detail::addressof(value)); }
|
||||||
|
|
||||||
const_pointer address(const_reference value) const
|
const_pointer address(const_reference value) const
|
||||||
|
@@ -108,7 +108,7 @@ class expand_bwd_test_allocator
|
|||||||
{ return m_size; }
|
{ return m_size; }
|
||||||
|
|
||||||
friend void swap(self_t &alloc1, self_t &alloc2)
|
friend void swap(self_t &alloc1, self_t &alloc2)
|
||||||
{
|
{
|
||||||
container_detail::do_swap(alloc1.mp_buffer, alloc2.mp_buffer);
|
container_detail::do_swap(alloc1.mp_buffer, alloc2.mp_buffer);
|
||||||
container_detail::do_swap(alloc1.m_size, alloc2.m_size);
|
container_detail::do_swap(alloc1.m_size, alloc2.m_size);
|
||||||
container_detail::do_swap(alloc1.m_offset, alloc2.m_offset);
|
container_detail::do_swap(alloc1.m_offset, alloc2.m_offset);
|
||||||
|
@@ -26,7 +26,7 @@ using namespace boost::container;
|
|||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace container {
|
namespace container {
|
||||||
/*
|
|
||||||
//Explicit instantiation to detect compilation errors
|
//Explicit instantiation to detect compilation errors
|
||||||
|
|
||||||
//flat_map
|
//flat_map
|
||||||
@@ -115,7 +115,7 @@ template class flat_multiset
|
|||||||
, std::less<test::movable_and_copyable_int>
|
, std::less<test::movable_and_copyable_int>
|
||||||
, std::allocator<test::movable_and_copyable_int>
|
, std::allocator<test::movable_and_copyable_int>
|
||||||
>;
|
>;
|
||||||
*/
|
|
||||||
}} //boost::container
|
}} //boost::container
|
||||||
|
|
||||||
|
|
||||||
@@ -627,55 +627,3 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#include <boost/container/detail/config_end.hpp>
|
#include <boost/container/detail/config_end.hpp>
|
||||||
|
|
||||||
/*
|
|
||||||
#include <boost/container/map.hpp>
|
|
||||||
#include <boost/container/flat_map.hpp>
|
|
||||||
#include <boost/container/vector.hpp>
|
|
||||||
#include <boost/move/move.hpp>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
struct Request
|
|
||||||
{
|
|
||||||
Request() {};
|
|
||||||
|
|
||||||
//Move semantics...
|
|
||||||
Request(BOOST_RV_REF(Request) r) : rvals() //Move constructor
|
|
||||||
{
|
|
||||||
rvals.swap(r.rvals);
|
|
||||||
};
|
|
||||||
|
|
||||||
Request& operator=(BOOST_RV_REF(Request) r) //Move assignment
|
|
||||||
{
|
|
||||||
if (this != &r){
|
|
||||||
rvals.swap(r.rvals);
|
|
||||||
}
|
|
||||||
return *this;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Values I want to be moved, not copied.
|
|
||||||
boost::container::vector<int> rvals;
|
|
||||||
|
|
||||||
private:
|
|
||||||
// Mark this class movable but not copyable
|
|
||||||
BOOST_MOVABLE_BUT_NOT_COPYABLE(Request)
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef boost::container::flat_map<int, Request> Requests;
|
|
||||||
//typedef boost::container::map<int, Request> Requests2;
|
|
||||||
|
|
||||||
int
|
|
||||||
main() {
|
|
||||||
Requests req;
|
|
||||||
|
|
||||||
Requests::value_type v;
|
|
||||||
std::pair<Requests::iterator, bool> ret = req.insert( boost::move(v));
|
|
||||||
//std::cout << "Insert success for req: " << ret.second << std::endl;
|
|
||||||
|
|
||||||
//Requests2 req2;
|
|
||||||
//std::pair<Requests::iterator, bool> ret2 = req2.insert( Requests2::value_type( 7, Request() ) );
|
|
||||||
//std::cout << "Insert success for req2: " << ret2.second << std::endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
@@ -8,20 +8,15 @@
|
|||||||
//
|
//
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
#include <boost/container/detail/config_begin.hpp>
|
#include <boost/container/detail/config_begin.hpp>
|
||||||
#include <boost/container/scoped_allocator.hpp>
|
#include <boost/container/scoped_allocator_fwd.hpp>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <boost/static_assert.hpp>
|
|
||||||
#include <boost/type_traits/is_same.hpp>
|
|
||||||
#include <boost/container/detail/function_detector.hpp>
|
|
||||||
#include <boost/container/detail/mpl.hpp>
|
#include <boost/container/detail/mpl.hpp>
|
||||||
#include <boost/move/move.hpp>
|
#include <boost/move/move.hpp>
|
||||||
|
#include <boost/type_traits/integral_constant.hpp>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <boost/container/vector.hpp>
|
|
||||||
#include <boost/container/detail/pair.hpp>
|
|
||||||
|
|
||||||
using namespace boost::container;
|
using namespace boost::container;
|
||||||
|
|
||||||
|
|
||||||
template<class T, unsigned int Id, bool Propagate = false>
|
template<class T, unsigned int Id, bool Propagate = false>
|
||||||
class test_allocator
|
class test_allocator
|
||||||
{
|
{
|
||||||
@@ -242,6 +237,12 @@ struct constructible_with_allocator_suffix
|
|||||||
} //namespace boost {
|
} //namespace boost {
|
||||||
|
|
||||||
|
|
||||||
|
#include <boost/container/scoped_allocator.hpp>
|
||||||
|
#include <boost/type_traits/is_same.hpp>
|
||||||
|
#include <boost/static_assert.hpp>
|
||||||
|
#include <boost/container/vector.hpp>
|
||||||
|
#include <boost/container/detail/pair.hpp>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef test_allocator<tagged_integer<0>, 0> OuterAlloc;
|
typedef test_allocator<tagged_integer<0>, 0> OuterAlloc;
|
||||||
|
@@ -30,13 +30,13 @@ namespace boost {
|
|||||||
namespace container {
|
namespace container {
|
||||||
|
|
||||||
//Explicit instantiation to detect compilation errors
|
//Explicit instantiation to detect compilation errors
|
||||||
template class stable_vector<test::movable_and_copyable_int,
|
template class stable_vector<test::movable_and_copyable_int,
|
||||||
test::dummy_test_allocator<test::movable_and_copyable_int> >;
|
test::dummy_test_allocator<test::movable_and_copyable_int> >;
|
||||||
|
|
||||||
template class stable_vector<test::movable_and_copyable_int,
|
template class stable_vector<test::movable_and_copyable_int,
|
||||||
test::simple_allocator<test::movable_and_copyable_int> >;
|
test::simple_allocator<test::movable_and_copyable_int> >;
|
||||||
|
|
||||||
template class stable_vector<test::movable_and_copyable_int,
|
template class stable_vector<test::movable_and_copyable_int,
|
||||||
std::allocator<test::movable_and_copyable_int> >;
|
std::allocator<test::movable_and_copyable_int> >;
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
@@ -71,7 +71,7 @@ inline bool in_range(const boost::posix_time::ptime& xt, int secs=1)
|
|||||||
boost::xtime xsecs(int secs)
|
boost::xtime xsecs(int secs)
|
||||||
{
|
{
|
||||||
boost::xtime ret;
|
boost::xtime ret;
|
||||||
boost::xtime_get(&ret, boost::TIME_UTC_);
|
boost::xtime_get(&ret, boost::TIME_UTC);
|
||||||
ret.sec += secs;
|
ret.sec += secs;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user