Unordered: Remove pair cast.

[SVN r74191]
This commit is contained in:
Daniel James
2011-09-02 08:27:27 +00:00
parent 26a47d33c1
commit 41b9b8d841
3 changed files with 16 additions and 52 deletions

View File

@ -204,22 +204,6 @@ namespace boost { namespace unordered { namespace detail {
return *bound; return *bound;
} }
////////////////////////////////////////////////////////////////////////////
// pair_cast - because some libraries don't have the full pair constructors.
#if 0
template <class Dst1, class Dst2, class Src1, class Src2>
inline std::pair<Dst1, Dst2> pair_cast(std::pair<Src1, Src2> const& x)
{
return std::pair<Dst1, Dst2>(Dst1(x.first), Dst2(x.second));
}
#define BOOST_UNORDERED_PAIR_CAST(First, Last, Argument) \
::boost::unordered::detail::pair_cast<First, Last>(Argument)
#else
#define BOOST_UNORDERED_PAIR_CAST(First, Last, Argument) \
Argument
#endif
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// insert_size/initial_size // insert_size/initial_size

View File

@ -854,8 +854,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool>
unordered_map<K,T,H,P,A>::emplace(Args&&... args) unordered_map<K,T,H,P,A>::emplace(Args&&... args)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(std::forward<Args>(args)...);
table_.emplace(std::forward<Args>(args)...));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -875,8 +874,7 @@ namespace unordered
value_type v value_type v
) )
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(boost::move(v));
table_.emplace(boost::move(v)));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -901,10 +899,7 @@ namespace unordered
unordered_map<K,T,H,P,A>::emplace( \ unordered_map<K,T,H,P,A>::emplace( \
BOOST_UNORDERED_FUNCTION_PARAMS(z, n)) \ BOOST_UNORDERED_FUNCTION_PARAMS(z, n)) \
{ \ { \
return \ return table_.emplace(BOOST_UNORDERED_CALL_PARAMS(z, n)); \
BOOST_UNORDERED_PAIR_CAST(iterator, bool, \
table_.emplace( \
BOOST_UNORDERED_CALL_PARAMS(z, n))); \
} \ } \
\ \
template <class K, class T, class H, class P, class A> \ template <class K, class T, class H, class P, class A> \
@ -932,8 +927,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool>
unordered_map<K,T,H,P,A>::insert(value_type const& obj) unordered_map<K,T,H,P,A>::insert(value_type const& obj)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(obj);
table_.emplace(obj));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -949,8 +943,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator, bool>
unordered_map<K,T,H,P,A>::insert(BOOST_RV_REF(value_type) obj) unordered_map<K,T,H,P,A>::insert(BOOST_RV_REF(value_type) obj)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(boost::move(obj));
table_.emplace(boost::move(obj)));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -1102,8 +1095,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator> BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::iterator>
unordered_map<K,T,H,P,A>::equal_range(const key_type& k) unordered_map<K,T,H,P,A>::equal_range(const key_type& k)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -1112,8 +1104,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::const_iterator> BOOST_DEDUCED_TYPENAME unordered_map<K,T,H,P,A>::const_iterator>
unordered_map<K,T,H,P,A>::equal_range(const key_type& k) const unordered_map<K,T,H,P,A>::equal_range(const key_type& k) const
{ {
return BOOST_UNORDERED_PAIR_CAST(const_iterator, const_iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -1516,8 +1507,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_multimap<K,T,H,P,A>::iterator> BOOST_DEDUCED_TYPENAME unordered_multimap<K,T,H,P,A>::iterator>
unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k) unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>
@ -1526,8 +1516,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_multimap<K,T,H,P,A>::const_iterator> BOOST_DEDUCED_TYPENAME unordered_multimap<K,T,H,P,A>::const_iterator>
unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k) const unordered_multimap<K,T,H,P,A>::equal_range(const key_type& k) const
{ {
return BOOST_UNORDERED_PAIR_CAST(const_iterator, const_iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class K, class T, class H, class P, class A> template <class K, class T, class H, class P, class A>

View File

@ -821,8 +821,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool>
unordered_set<T,H,P,A>::emplace(Args&&... args) unordered_set<T,H,P,A>::emplace(Args&&... args)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(std::forward<Args>(args)...);
table_.emplace(std::forward<Args>(args)...));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>
@ -841,8 +840,7 @@ namespace unordered
value_type v value_type v
) )
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(boost::move(v));
table_.emplace(boost::move(v)));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>
@ -866,10 +864,7 @@ namespace unordered
unordered_set<T,H,P,A>::emplace( \ unordered_set<T,H,P,A>::emplace( \
BOOST_UNORDERED_FUNCTION_PARAMS(z, n)) \ BOOST_UNORDERED_FUNCTION_PARAMS(z, n)) \
{ \ { \
return \ return table_.emplace(BOOST_UNORDERED_CALL_PARAMS(z, n)); \
BOOST_UNORDERED_PAIR_CAST(iterator, bool, \
table_.emplace( \
BOOST_UNORDERED_CALL_PARAMS(z, n))); \
} \ } \
\ \
template <class T, class H, class P, class A> \ template <class T, class H, class P, class A> \
@ -897,8 +892,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool>
unordered_set<T,H,P,A>::insert(value_type const& obj) unordered_set<T,H,P,A>::insert(value_type const& obj)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(obj);
table_.emplace(obj));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>
@ -914,8 +908,7 @@ namespace unordered
std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool> std::pair<BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::iterator, bool>
unordered_set<T,H,P,A>::insert(BOOST_RV_REF(value_type) obj) unordered_set<T,H,P,A>::insert(BOOST_RV_REF(value_type) obj)
{ {
return BOOST_UNORDERED_PAIR_CAST(iterator, bool, return table_.emplace(boost::move(obj));
table_.emplace(boost::move(obj)));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>
@ -1025,8 +1018,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::const_iterator> BOOST_DEDUCED_TYPENAME unordered_set<T,H,P,A>::const_iterator>
unordered_set<T,H,P,A>::equal_range(const key_type& k) const unordered_set<T,H,P,A>::equal_range(const key_type& k) const
{ {
return BOOST_UNORDERED_PAIR_CAST(const_iterator, const_iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>
@ -1406,8 +1398,7 @@ namespace unordered
BOOST_DEDUCED_TYPENAME unordered_multiset<T,H,P,A>::const_iterator> BOOST_DEDUCED_TYPENAME unordered_multiset<T,H,P,A>::const_iterator>
unordered_multiset<T,H,P,A>::equal_range(const key_type& k) const unordered_multiset<T,H,P,A>::equal_range(const key_type& k) const
{ {
return BOOST_UNORDERED_PAIR_CAST(const_iterator, const_iterator, return table_.equal_range(k);
table_.equal_range(k));
} }
template <class T, class H, class P, class A> template <class T, class H, class P, class A>