|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r83140 - in trunk: boost/container boost/container/detail libs/container/proj/vc7ide libs/container/test
From: igaztanaga_at_[hidden]
Date: 2013-02-24 15:34:16
Author: igaztanaga
Date: 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
New Revision: 83140
URL: http://svn.boost.org/trac/boost/changeset/83140
Log:
Add experimental option to define "vector::iterator" as "pointer"
Added:
trunk/libs/container/proj/vc7ide/bench_static_vector.vcproj (contents, props changed)
Text files modified:
trunk/boost/container/detail/flat_tree.hpp | 18 ++++
trunk/boost/container/stable_vector.hpp | 3
trunk/boost/container/vector.hpp | 121 +++++++++++++++++++++++++++++----------
trunk/libs/container/test/map_test.hpp | 10 +-
trunk/libs/container/test/set_test.hpp | 14 ++--
trunk/libs/container/test/vector_test.cpp | 4 +
6 files changed, 123 insertions(+), 47 deletions(-)
Modified: trunk/boost/container/detail/flat_tree.hpp
==============================================================================
--- trunk/boost/container/detail/flat_tree.hpp (original)
+++ trunk/boost/container/detail/flat_tree.hpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -33,6 +33,9 @@
#include <boost/container/detail/value_init.hpp>
#include <boost/container/detail/destroyers.hpp>
#include <boost/container/allocator_traits.hpp>
+#ifdef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+#include <boost/intrusive/pointer_traits.hpp>
+#endif
#include <boost/aligned_storage.hpp>
namespace boost {
@@ -73,10 +76,19 @@
template<class Pointer>
struct get_flat_tree_iterators
{
+ #ifdef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+ typedef Pointer iterator;
+ typedef typename boost::intrusive::
+ pointer_traits<Pointer>::element_type iterator_element_type;
+ typedef typename boost::intrusive::
+ pointer_traits<Pointer>:: template
+ rebind_pointer<const iterator_element_type>::type const_iterator;
+ #else //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
typedef typename container_detail::
vector_iterator<Pointer> iterator;
typedef typename container_detail::
vector_const_iterator<Pointer> const_iterator;
+ #endif //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
};
@@ -785,7 +797,7 @@
const value_compare &value_comp = this->m_data;
commit_data.position = this->priv_lower_bound(b, e, KeyOfValue()(val));
return std::pair<iterator,bool>
- ( *reinterpret_cast<iterator*>(&commit_data.position)
+ ( iterator(vector_iterator_get_ptr(commit_data.position))
, commit_data.position == e || value_comp(val, *commit_data.position));
}
@@ -813,10 +825,10 @@
if(pos != this->cbegin() && !value_comp(val, pos[-1])){
if(value_comp(pos[-1], val)){
commit_data.position = pos;
- return std::pair<iterator,bool>(*reinterpret_cast<iterator*>(&pos), true);
+ return std::pair<iterator,bool>(iterator(vector_iterator_get_ptr(pos)), true);
}
else{
- return std::pair<iterator,bool>(*reinterpret_cast<iterator*>(&pos), false);
+ return std::pair<iterator,bool>(iterator(vector_iterator_get_ptr(pos)), false);
}
}
return this->priv_insert_unique_prepare(this->cbegin(), pos, val, commit_data);
Modified: trunk/boost/container/stable_vector.hpp
==============================================================================
--- trunk/boost/container/stable_vector.hpp (original)
+++ trunk/boost/container/stable_vector.hpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -333,7 +333,8 @@
static void readjust_end_node(index_type &index, node_base_type &end_node)
{
if(!index.empty()){
- node_base_ptr &end_node_idx_ref = *(--index_traits::get_fix_up_end(index));
+ index_iterator end_node_it(index_traits::get_fix_up_end(index));
+ node_base_ptr &end_node_idx_ref = *(--end_node_it);
end_node_idx_ref = node_base_ptr_traits::pointer_to(end_node);
end_node.up = node_base_ptr_ptr_traits::pointer_to(end_node_idx_ref);
}
Modified: trunk/boost/container/vector.hpp
==============================================================================
--- trunk/boost/container/vector.hpp (original)
+++ trunk/boost/container/vector.hpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -55,8 +55,12 @@
/// @cond
+//#define BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
namespace container_detail {
+#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
//! Const vector_iterator used to iterate through a vector.
template <class Pointer>
class vector_const_iterator
@@ -221,6 +225,57 @@
{ left.m_ptr -= off; return left; }
};
+} //namespace container_detail {
+
+template<class Pointer>
+const Pointer &vector_iterator_get_ptr(const container_detail::vector_const_iterator<Pointer> &it) BOOST_CONTAINER_NOEXCEPT
+{ return it.get_ptr(); }
+
+template<class Pointer>
+Pointer &get_ptr(container_detail::vector_const_iterator<Pointer> &it) BOOST_CONTAINER_NOEXCEPT
+{ return it.get_ptr(); }
+
+namespace container_detail {
+
+#else //ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
+template< class MaybeConstPointer
+ , bool ElementTypeIsConst
+ = is_const< typename boost::intrusive::pointer_traits<MaybeConstPointer>::element_type>::value >
+struct vector_get_ptr_pointer_to_non_const
+{
+ typedef MaybeConstPointer const_pointer;
+ typedef boost::intrusive::pointer_traits<const_pointer> pointer_traits_t;
+ typedef typename pointer_traits_t::element_type element_type;
+ typedef typename remove_const<element_type>::type non_const_element_type;
+ typedef typename pointer_traits_t
+ ::template rebind_pointer<non_const_element_type>::type return_type;
+
+ static return_type get_ptr(const const_pointer &ptr)
+ { return boost::intrusive::pointer_traits<return_type>::const_cast_from(ptr); }
+};
+
+template<class Pointer>
+struct vector_get_ptr_pointer_to_non_const<Pointer, false>
+{
+ typedef const Pointer & return_type;
+ static return_type get_ptr(const Pointer &ptr)
+ { return ptr; }
+};
+
+} //namespace container_detail {
+
+template<class MaybeConstPointer>
+typename container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::return_type
+ vector_iterator_get_ptr(const MaybeConstPointer &ptr) BOOST_CONTAINER_NOEXCEPT
+{
+ return container_detail::vector_get_ptr_pointer_to_non_const<MaybeConstPointer>::get_ptr(ptr);
+}
+
+namespace container_detail {
+
+#endif //#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
template <class T, class Allocator>
struct vector_value_traits
{
@@ -323,7 +378,6 @@
void first_allocation_same_allocator_type(size_type cap)
{ this->first_allocation(cap); }
- //Destructor
~vector_alloc_holder() BOOST_CONTAINER_NOEXCEPT
{
if(this->m_capacity){
@@ -359,9 +413,6 @@
container_detail::do_swap(this->m_start, x.m_start);
container_detail::do_swap(this->m_size, x.m_size);
container_detail::do_swap(this->m_capacity, x.m_capacity);
- //And now the allocator
- container_detail::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
- container_detail::swap_alloc(this->alloc(), x.alloc(), flag);
}
void move_from_empty(vector_alloc_holder &x) BOOST_CONTAINER_NOEXCEPT
@@ -389,10 +440,10 @@
}
}
- const pointer &start() const { return m_start; }
- const size_type &capacity() const { return m_capacity; }
- void start(const pointer &p) { m_start = p; }
- void capacity(const size_type &c) { m_capacity = c; }
+ const pointer &start() const BOOST_CONTAINER_NOEXCEPT { return m_start; }
+ const size_type &capacity() const BOOST_CONTAINER_NOEXCEPT { return m_capacity; }
+ void start(const pointer &p) BOOST_CONTAINER_NOEXCEPT { m_start = p; }
+ void capacity(const size_type &c) BOOST_CONTAINER_NOEXCEPT { m_capacity = c; }
};
//!This struct deallocates and allocated memory
@@ -468,7 +519,7 @@
}
}
- void first_allocation_same_allocator_type(size_type)
+ void first_allocation_same_allocator_type(size_type) BOOST_CONTAINER_NOEXCEPT
{}
//Destructor
@@ -489,7 +540,7 @@
this->priv_swap_members_impl(x);
}
- void move_from_empty(vector_alloc_holder &x) BOOST_CONTAINER_NOEXCEPT
+ void move_from_empty(vector_alloc_holder &x)
{ //Containers with version 0 allocators can't be moved without move elements one by one
throw_bad_alloc();
}
@@ -503,8 +554,8 @@
void deallocate() BOOST_CONTAINER_NOEXCEPT
{}
- pointer start() const { return Allocator::internal_storage(); }
- size_type capacity() const { return Allocator::internal_capacity; }
+ pointer start() const BOOST_CONTAINER_NOEXCEPT { return Allocator::internal_storage(); }
+ size_type capacity() const BOOST_CONTAINER_NOEXCEPT { return Allocator::internal_capacity; }
size_type m_size;
private:
@@ -542,11 +593,11 @@
#endif
class vector
{
+ /// @cond
typedef container_detail::integral_constant
<unsigned, boost::container::container_detail::version
<Allocator>::value > alloc_version;
boost::container::container_detail::vector_alloc_holder<Allocator, alloc_version> m_holder;
- /// @cond
typedef container_detail::vector_alloc_holder<Allocator> base_t;
typedef allocator_traits<Allocator> allocator_traits_type;
template <class U, class UAllocator>
@@ -568,8 +619,13 @@
typedef typename ::boost::container::allocator_traits<Allocator>::difference_type difference_type;
typedef Allocator allocator_type;
typedef Allocator stored_allocator_type;
+ #if defined BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER && !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
+ typedef BOOST_CONTAINER_IMPDEF(pointer) iterator;
+ typedef BOOST_CONTAINER_IMPDEF(const_pointer) const_iterator;
+ #else
typedef BOOST_CONTAINER_IMPDEF(container_detail::vector_iterator<pointer>) iterator;
typedef BOOST_CONTAINER_IMPDEF(container_detail::vector_const_iterator<pointer>) const_iterator;
+ #endif
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<iterator>) reverse_iterator;
typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<const_iterator>) const_reverse_iterator;
@@ -844,7 +900,7 @@
if (first == last){
//There are no more elements in the sequence, erase remaining
T* const end_pos = container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size;
- size_type n = static_cast<size_type>(end_pos - container_detail::to_raw_pointer(cur.get_ptr()));
+ size_type n = static_cast<size_type>(end_pos - container_detail::to_raw_pointer(vector_iterator_get_ptr(cur)));
this->priv_destroy_last_n(n);
}
else{
@@ -1243,7 +1299,7 @@
else{
typedef container_detail::insert_emplace_proxy<Allocator, T*, Args...> type;
this->priv_forward_range_insert_no_capacity
- (this->cend().get_ptr(), 1, type(this->m_holder.alloc(), ::boost::forward<Args>(args)...), alloc_version());
+ (vector_iterator_get_ptr(this->cend()), 1, type(this->m_holder.alloc(), ::boost::forward<Args>(args)...), alloc_version());
}
}
@@ -1262,7 +1318,7 @@
{
//Just call more general insert(pos, size, value) and return iterator
typedef container_detail::insert_emplace_proxy<Allocator, T*, Args...> type;
- return this->priv_forward_range_insert( position.get_ptr(), 1, type(this->m_holder.alloc()
+ return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1, type(this->m_holder.alloc()
, ::boost::forward<Args>(args)...), alloc_version());
}
@@ -1284,7 +1340,7 @@
<Allocator, T* BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
(this->m_holder.alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
this->priv_forward_range_insert_no_capacity \
- (this->cend().get_ptr(), 1, proxy, alloc_version()); \
+ (vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version()); \
} \
} \
\
@@ -1296,7 +1352,7 @@
<Allocator, T* BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
(this->m_holder.alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
return this->priv_forward_range_insert \
- (container_detail::to_raw_pointer(pos.get_ptr()), 1, proxy, alloc_version()); \
+ (container_detail::to_raw_pointer(vector_iterator_get_ptr(pos)), 1, proxy, alloc_version()); \
} \
//!
#define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
@@ -1361,7 +1417,7 @@
iterator insert(const_iterator p, size_type n, const T& x)
{
container_detail::insert_n_copies_proxy<Allocator, T*> proxy(this->m_holder.alloc(), x);
- return this->priv_forward_range_insert(p.get_ptr(), n, proxy, alloc_version());
+ return this->priv_forward_range_insert(vector_iterator_get_ptr(p), n, proxy, alloc_version());
}
//! <b>Requires</b>: p must be a valid iterator of *this.
@@ -1385,7 +1441,7 @@
)
{
const size_type n_pos = pos - this->cbegin();
- iterator it(pos.get_ptr());
+ iterator it(vector_iterator_get_ptr(pos));
for(;first != last; ++first){
it = this->emplace(it, *first);
++it;
@@ -1403,7 +1459,7 @@
)
{
container_detail::insert_range_proxy<Allocator, FwdIt, T*> proxy(this->m_holder.alloc(), first);
- return this->priv_forward_range_insert(pos.get_ptr(), std::distance(first, last), proxy, alloc_version());
+ return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), std::distance(first, last), proxy, alloc_version());
}
#endif
@@ -1427,12 +1483,12 @@
//! last element. Constant if pos is the last element.
iterator erase(const_iterator position)
{
- T *const pos = container_detail::to_raw_pointer(position.get_ptr());
+ T *const pos = container_detail::to_raw_pointer(vector_iterator_get_ptr(position));
T *const beg = container_detail::to_raw_pointer(this->m_holder.start());
//Move elements forward and destroy last
this->priv_destroy(::boost::move(pos + 1, beg + this->m_holder.m_size, pos));
--this->m_holder.m_size;
- return iterator(position.get_ptr());
+ return iterator(vector_iterator_get_ptr(position));
}
//! <b>Effects</b>: Erases the elements pointed by [first, last).
@@ -1446,15 +1502,15 @@
if (first != last){
T* const end_pos = container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size;
T* const ptr = container_detail::to_raw_pointer(boost::move
- (container_detail::to_raw_pointer(last.get_ptr())
+ (container_detail::to_raw_pointer(vector_iterator_get_ptr(last))
,end_pos
- ,container_detail::to_raw_pointer(first.get_ptr())
+ ,container_detail::to_raw_pointer(vector_iterator_get_ptr(first))
));
const size_type destroyed = (end_pos - ptr);
destroy_alloc_n(this->get_stored_allocator(), ptr, destroyed);
this->m_holder.m_size -= destroyed;
}
- return iterator(first.get_ptr());
+ return iterator(vector_iterator_get_ptr(first));
}
//! <b>Effects</b>: Swaps the contents of *this and x.
@@ -1466,6 +1522,9 @@
{
//Just swap internals in case of !allocator_v0. Otherwise, deep swap
this->m_holder.swap(x.m_holder);
+ //And now the allocator
+ container_detail::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
+ container_detail::swap_alloc(this->m_holder.alloc(), x.m_holder.alloc(), flag);
}
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
@@ -1738,7 +1797,7 @@
iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) x)
{
return this->priv_forward_range_insert
- ( p.get_ptr(), 1, container_detail::get_insert_value_proxy<T*>(this->m_holder.alloc()
+ ( vector_iterator_get_ptr(p), 1, container_detail::get_insert_value_proxy<T*>(this->m_holder.alloc()
, ::boost::forward<U>(x)), alloc_version());
}
@@ -1754,7 +1813,7 @@
}
else{
container_detail::insert_copy_proxy<Allocator, T*> proxy(this->m_holder.alloc(), x);
- this->priv_forward_range_insert_no_capacity(this->cend().get_ptr(), 1, proxy, alloc_version());
+ this->priv_forward_range_insert_no_capacity(vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version());
}
}
@@ -1770,7 +1829,7 @@
}
else{
container_detail::insert_move_proxy<Allocator, T*> proxy(this->m_holder.alloc(), x);
- this->priv_forward_range_insert_no_capacity(this->cend().get_ptr(), 1, proxy, alloc_version());
+ this->priv_forward_range_insert_no_capacity(vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version());
}
}
@@ -1907,7 +1966,7 @@
iterator priv_forward_range_insert_at_end
(const size_type n, const InsertionProxy insert_range_proxy, allocator_v1)
{
- return this->priv_forward_range_insert(this->cend().get_ptr(), n, insert_range_proxy, allocator_v1());
+ return this->priv_forward_range_insert(vector_iterator_get_ptr(this->cend()), n, insert_range_proxy, allocator_v1());
}
template <class InsertionProxy>
@@ -1983,7 +2042,7 @@
iterator priv_forward_range_insert_at_end
(const size_type n, const InsertionProxy insert_range_proxy, allocator_v2)
{
- return this->priv_forward_range_insert(this->cend().get_ptr(), n, insert_range_proxy, allocator_v2());
+ return this->priv_forward_range_insert(vector_iterator_get_ptr(this->cend()), n, insert_range_proxy, allocator_v2());
}
//Absolutely experimental. This function might change, disappear or simply crash!
Added: trunk/libs/container/proj/vc7ide/bench_static_vector.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/container/proj/vc7ide/bench_static_vector.vcproj 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="bench_static_vector"
+ ProjectGUID="{55E1C1C3-84FE-26A9-4A2E-D7901C32BA02}"
+ Keyword="Win32Proj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../Bin/Win32/Debug"
+ IntermediateDirectory="Debug/bench_static_vector"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ MinimalRebuild="TRUE"
+ ExceptionHandling="TRUE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="FALSE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="$(OutDir)/bench_static_vector_d.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile="$(OutDir)/bench_static_vector.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ FixedBaseAddress="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="../../Bin/Win32/Release"
+ IntermediateDirectory="Release/bench_static_vector"
+ ConfigurationType="1"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="../../../.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
+ RuntimeLibrary="2"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="FALSE"
+ UsePrecompiledHeader="0"
+ WarningLevel="4"
+ Detect64BitPortabilityProblems="TRUE"
+ DebugInformationFormat="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ OutputFile="$(OutDir)/bench_static_vector.exe"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../../../stage/lib"
+ GenerateDebugInformation="TRUE"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{437B79CF-06A6-C58A-4312-37D42A302ADF}">
+ <File
+ RelativePath="..\..\bench\bench_static_vector.cpp">
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: trunk/libs/container/test/map_test.hpp
==============================================================================
--- trunk/libs/container/test/map_test.hpp (original)
+++ trunk/libs/container/test/map_test.hpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -179,14 +179,14 @@
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
- typename MyBoostMap::iterator it;
+ typename MyBoostMap::iterator it = boostmap->begin();
typename MyBoostMap::const_iterator cit = it;
(void)cit;
- boostmap->erase(boostmap->begin()++);
- stdmap->erase(stdmap->begin()++);
- boostmultimap->erase(boostmultimap->begin()++);
- stdmultimap->erase(stdmultimap->begin()++);
+ boostmap->erase(boostmap->begin());
+ stdmap->erase(stdmap->begin());
+ boostmultimap->erase(boostmultimap->begin());
+ stdmultimap->erase(stdmultimap->begin());
if(!CheckEqualPairContainers(boostmap, stdmap)) return 1;
if(!CheckEqualPairContainers(boostmultimap, stdmultimap)) return 1;
Modified: trunk/libs/container/test/set_test.hpp
==============================================================================
--- trunk/libs/container/test/set_test.hpp (original)
+++ trunk/libs/container/test/set_test.hpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -143,20 +143,20 @@
return 1;
}
- typename MyBoostSet::iterator it;
+ typename MyBoostSet::iterator it = boostset->begin();
typename MyBoostSet::const_iterator cit = it;
(void)cit;
- boostset->erase(boostset->begin()++);
- stdset->erase(stdset->begin()++);
- boostmultiset->erase(boostmultiset->begin()++);
- stdmultiset->erase(stdmultiset->begin()++);
+ boostset->erase(boostset->begin());
+ stdset->erase(stdset->begin());
+ boostmultiset->erase(boostmultiset->begin());
+ stdmultiset->erase(stdmultiset->begin());
if(!CheckEqualContainers(boostset, stdset)){
- std::cout << "Error in boostset->erase(boostset->begin()++)" << std::endl;
+ std::cout << "Error in boostset->erase(boostset->begin())" << std::endl;
return 1;
}
if(!CheckEqualContainers(boostmultiset, stdmultiset)){
- std::cout << "Error in boostmultiset->erase(boostmultiset->begin()++)" << std::endl;
+ std::cout << "Error in boostmultiset->erase(boostmultiset->begin())" << std::endl;
return 1;
}
Modified: trunk/libs/container/test/vector_test.cpp
==============================================================================
--- trunk/libs/container/test/vector_test.cpp (original)
+++ trunk/libs/container/test/vector_test.cpp 2013-02-24 15:34:15 EST (Sun, 24 Feb 2013)
@@ -41,9 +41,13 @@
namespace container_detail {
+#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
template class vector_const_iterator<int*>;
template class vector_iterator<int*>;
+#endif //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
+
}
}}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk