Merged from trunk

[SVN r79559]
This commit is contained in:
Ion Gaztañaga
2012-07-16 09:04:33 +00:00
parent bd7e6c3fd9
commit d535f151e7
9 changed files with 40 additions and 72 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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>

View 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

View File

@@ -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);

View File

@@ -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;
}
*/

View File

@@ -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;

View File

@@ -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> >;
}} }}

View File

@@ -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;
} }