From 9090d87725a60cdc3854491252fd2fd4367fdb80 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 16 Nov 2014 10:01:17 +0000 Subject: [PATCH] Restore ampersand workaround for Visual C++ 9 --- test/objects/minimal.hpp | 46 ++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/test/objects/minimal.hpp b/test/objects/minimal.hpp index a757a035..9cb054ad 100644 --- a/test/objects/minimal.hpp +++ b/test/objects/minimal.hpp @@ -19,6 +19,12 @@ #pragma warning(disable:4100) // unreferenced formal parameter #endif +#if !BOOST_WORKAROUND(BOOST_MSVC, == 1500) +#define BOOST_UNORDERED_PRIVATE_AMPERSAND private +#else +#define BOOST_UNORDERED_PRIVATE_AMPERSAND public +#endif + namespace test { namespace minimal @@ -29,7 +35,9 @@ namespace minimal class default_assignable; class assignable; - struct ampersand_operator_used {}; + struct ampersand_operator_used { + ampersand_operator_used() { BOOST_TEST(false); } + }; template class hash; template class equal_to; @@ -85,7 +93,9 @@ namespace minimal copy_constructible_equality_comparable& operator=( copy_constructible_equality_comparable const&); 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==( @@ -125,7 +135,8 @@ namespace minimal } void dummy_member() const {} - private: + + BOOST_UNORDERED_PRIVATE_AMPERSAND: ampersand_operator_used operator&() const { return ampersand_operator_used(); } }; @@ -140,7 +151,9 @@ namespace minimal void dummy_member() const {} private: 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 {}; @@ -189,8 +202,9 @@ namespace minimal ~hash() {} std::size_t operator()(T const&) const { return 0; } - private: - ampersand_operator_used operator&() const { return ampersand_operator_used(); } + BOOST_UNORDERED_PRIVATE_AMPERSAND: + ampersand_operator_used operator&() const { + return ampersand_operator_used(); } }; template @@ -204,8 +218,9 @@ namespace minimal ~equal_to() {} bool operator()(T const&, T const&) const { return true; } - private: - ampersand_operator_used operator&() const { return ampersand_operator_used(); } + BOOST_UNORDERED_PRIVATE_AMPERSAND: + ampersand_operator_used operator&() const { + return ampersand_operator_used(); } }; template 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_; } - private: - ampersand_operator_used operator&() const { return ampersand_operator_used(); } + BOOST_UNORDERED_PRIVATE_AMPERSAND: + ampersand_operator_used operator&() const { + return ampersand_operator_used(); } }; template @@ -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_; } - private: - ampersand_operator_used operator&() const { return ampersand_operator_used(); } + BOOST_UNORDERED_PRIVATE_AMPERSAND: + ampersand_operator_used operator&() const { + return ampersand_operator_used(); } }; template @@ -390,8 +407,9 @@ namespace minimal #else private: allocator& operator=(allocator const&); #endif - private: - ampersand_operator_used operator&() const { return ampersand_operator_used(); } + BOOST_UNORDERED_PRIVATE_AMPERSAND: + ampersand_operator_used operator&() const { + return ampersand_operator_used(); } }; template