Restore ampersand workaround for Visual C++ 9

This commit is contained in:
Daniel James
2014-11-16 10:01:17 +00:00
parent 8ccde2e5a1
commit 9090d87725

View File

@ -19,6 +19,12 @@
#pragma warning(disable:4100) // unreferenced formal parameter #pragma warning(disable:4100) // unreferenced formal parameter
#endif #endif
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1500)
#define BOOST_UNORDERED_PRIVATE_AMPERSAND private
#else
#define BOOST_UNORDERED_PRIVATE_AMPERSAND public
#endif
namespace test namespace test
{ {
namespace minimal namespace minimal
@ -29,7 +35,9 @@ namespace minimal
class default_assignable; class default_assignable;
class assignable; class assignable;
struct ampersand_operator_used {}; struct ampersand_operator_used {
ampersand_operator_used() { BOOST_TEST(false); }
};
template <class T> class hash; template <class T> class hash;
template <class T> class equal_to; template <class T> class equal_to;
@ -85,7 +93,9 @@ namespace minimal
copy_constructible_equality_comparable& operator=( copy_constructible_equality_comparable& operator=(
copy_constructible_equality_comparable const&); copy_constructible_equality_comparable const&);
copy_constructible_equality_comparable() {} copy_constructible_equality_comparable() {}
ampersand_operator_used operator&() const { return ampersand_operator_used(); } BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
bool operator==( bool operator==(
@ -125,7 +135,8 @@ namespace minimal
} }
void dummy_member() const {} void dummy_member() const {}
private:
BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { ampersand_operator_used operator&() const {
return ampersand_operator_used(); } return ampersand_operator_used(); }
}; };
@ -140,7 +151,9 @@ namespace minimal
void dummy_member() const {} void dummy_member() const {}
private: private:
assignable() {} assignable() {}
ampersand_operator_used operator&() const { return ampersand_operator_used(); } BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
struct movable_init {}; struct movable_init {};
@ -189,8 +202,9 @@ namespace minimal
~hash() {} ~hash() {}
std::size_t operator()(T const&) const { return 0; } std::size_t operator()(T const&) const { return 0; }
private: BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { return ampersand_operator_used(); } ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
template <class T> template <class T>
@ -204,8 +218,9 @@ namespace minimal
~equal_to() {} ~equal_to() {}
bool operator()(T const&, T const&) const { return true; } bool operator()(T const&, T const&) const { return true; }
private: BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { return ampersand_operator_used(); } ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
template <class T> class ptr; template <class T> class ptr;
@ -293,8 +308,9 @@ namespace minimal
bool operator>(ptr const& x) const { return ptr_ > x.ptr_; } bool operator>(ptr const& x) const { return ptr_ > x.ptr_; }
bool operator<=(ptr const& x) const { return ptr_ <= x.ptr_; } bool operator<=(ptr const& x) const { return ptr_ <= x.ptr_; }
bool operator>=(ptr const& x) const { return ptr_ >= x.ptr_; } bool operator>=(ptr const& x) const { return ptr_ >= x.ptr_; }
private: BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { return ampersand_operator_used(); } ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
template <class T> template <class T>
@ -329,8 +345,9 @@ namespace minimal
bool operator>(const_ptr const& x) const { return ptr_ > x.ptr_; } bool operator>(const_ptr const& x) const { return ptr_ > x.ptr_; }
bool operator<=(const_ptr const& x) const { return ptr_ <= x.ptr_; } bool operator<=(const_ptr const& x) const { return ptr_ <= x.ptr_; }
bool operator>=(const_ptr const& x) const { return ptr_ >= x.ptr_; } bool operator>=(const_ptr const& x) const { return ptr_ >= x.ptr_; }
private: BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { return ampersand_operator_used(); } ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
template <class T> template <class T>
@ -390,8 +407,9 @@ namespace minimal
#else #else
private: allocator& operator=(allocator const&); private: allocator& operator=(allocator const&);
#endif #endif
private: BOOST_UNORDERED_PRIVATE_AMPERSAND:
ampersand_operator_used operator&() const { return ampersand_operator_used(); } ampersand_operator_used operator&() const {
return ampersand_operator_used(); }
}; };
template <class T> template <class T>