Unordered: merge from trunk.

[SVN r74932]
This commit is contained in:
Daniel James
2011-10-12 22:30:02 +00:00
parent 50e8df5e12
commit 8591c1f180
4 changed files with 83 additions and 16 deletions
@@ -104,7 +104,8 @@ namespace boost { namespace unordered { namespace detail {
yes_type is_private_type(private_type const&);
struct convert_from_anything {
convert_from_anything(...);
template <typename T>
convert_from_anything(T const&);
};
#if !defined(BOOST_NO_SFINAE_EXPR) || BOOST_WORKAROUND(BOOST_MSVC, >= 1500)
@@ -339,7 +340,7 @@ namespace boost { namespace unordered { namespace detail {
boost::unordered::detail::has_max_size<Alloc>::value, SizeType
>::type call_max_size(const Alloc&)
{
return std::numeric_limits<SizeType>::max();
return (std::numeric_limits<SizeType>::max)();
}
template <typename Alloc>
@@ -223,29 +223,29 @@ BOOST_UNORDERED_CONSTRUCT_FROM_TUPLE(10, std::tr1)
#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
template <typename A, typename B, typename A0>
struct emulation1 {
static choice1::type check(choice1, std::pair<A, B> const&);
static choice2::type check(choice2, A const&);
static choice3::type check(choice3, ...);
static choice1::type test(choice1, std::pair<A, B> const&);
static choice2::type test(choice2, A const&);
static choice3::type test(choice3, convert_from_anything const&);
enum { value =
sizeof(check(choose(), boost::unordered::detail::make<A0>())) ==
sizeof(test(choose(), boost::unordered::detail::make<A0>())) ==
sizeof(choice2::type) };
};
#endif
template <typename A, typename B, typename A0>
struct check3_base {
static choice1::type check(choice1,
static choice1::type test(choice1,
boost::unordered::piecewise_construct_t);
#if defined(BOOST_UNORDERED_DEPRECATED_PAIR_CONSTRUCT)
static choice2::type check(choice2, A const&);
static choice2::type test(choice2, A const&);
#endif
static choice3::type check(choice3, ...);
static choice3::type test(choice3, ...);
enum { value =
sizeof(check(choose(), boost::unordered::detail::make<A0>())) };
sizeof(test(choose(), boost::unordered::detail::make<A0>())) };
};
template <typename A, typename B, typename A0>