mirror of
https://github.com/boostorg/container.git
synced 2025-08-02 22:14: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]
|
||||
|
||||
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
|
||||
allocators.
|
||||
|
||||
@@ -614,18 +614,30 @@ use [*Boost.Container]? There are several reasons for that:
|
||||
|
||||
[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]
|
||||
|
||||
* Added Scoped Allocator Model support.
|
||||
|
||||
* 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/6575 #6575],
|
||||
[@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/6533 #6533],
|
||||
[@https://svn.boost.org/trac/boost/ticket/6536 #6536],
|
||||
|
||||
|
||||
[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
|
||||
|
||||
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
|
||||
RelativePath="..\..\..\..\boost\container\scoped_allocator.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\container\scoped_allocator_fwd.hpp">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\boost\container\set.hpp">
|
||||
</File>
|
||||
|
@@ -111,7 +111,7 @@ class dummy_test_allocator
|
||||
dummy_test_allocator(const dummy_test_allocator<T2> &)
|
||||
{}
|
||||
|
||||
pointer address(reference value)
|
||||
pointer address(reference value)
|
||||
{ return pointer(container_detail::addressof(value)); }
|
||||
|
||||
const_pointer address(const_reference value) const
|
||||
|
@@ -108,7 +108,7 @@ class expand_bwd_test_allocator
|
||||
{ return m_size; }
|
||||
|
||||
friend void swap(self_t &alloc1, self_t &alloc2)
|
||||
{
|
||||
{
|
||||
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_offset, alloc2.m_offset);
|
||||
|
@@ -26,7 +26,7 @@ using namespace boost::container;
|
||||
|
||||
namespace boost {
|
||||
namespace container {
|
||||
/*
|
||||
|
||||
//Explicit instantiation to detect compilation errors
|
||||
|
||||
//flat_map
|
||||
@@ -115,7 +115,7 @@ template class flat_multiset
|
||||
, std::less<test::movable_and_copyable_int>
|
||||
, std::allocator<test::movable_and_copyable_int>
|
||||
>;
|
||||
*/
|
||||
|
||||
}} //boost::container
|
||||
|
||||
|
||||
@@ -627,55 +627,3 @@ int main()
|
||||
}
|
||||
|
||||
#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/scoped_allocator.hpp>
|
||||
#include <boost/container/scoped_allocator_fwd.hpp>
|
||||
#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/move/move.hpp>
|
||||
#include <boost/type_traits/integral_constant.hpp>
|
||||
#include <memory>
|
||||
#include <boost/container/vector.hpp>
|
||||
#include <boost/container/detail/pair.hpp>
|
||||
|
||||
using namespace boost::container;
|
||||
|
||||
|
||||
template<class T, unsigned int Id, bool Propagate = false>
|
||||
class test_allocator
|
||||
{
|
||||
@@ -242,6 +237,12 @@ struct constructible_with_allocator_suffix
|
||||
} //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()
|
||||
{
|
||||
typedef test_allocator<tagged_integer<0>, 0> OuterAlloc;
|
||||
|
@@ -30,13 +30,13 @@ namespace boost {
|
||||
namespace container {
|
||||
|
||||
//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> >;
|
||||
|
||||
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> >;
|
||||
|
||||
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> >;
|
||||
|
||||
}}
|
||||
|
@@ -71,7 +71,7 @@ inline bool in_range(const boost::posix_time::ptime& xt, int secs=1)
|
||||
boost::xtime xsecs(int secs)
|
||||
{
|
||||
boost::xtime ret;
|
||||
boost::xtime_get(&ret, boost::TIME_UTC_);
|
||||
boost::xtime_get(&ret, boost::TIME_UTC);
|
||||
ret.sec += secs;
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user