diff --git a/include/boost/type_traits/object_traits.hpp b/include/boost/type_traits/object_traits.hpp index 5202d98..36e2ad9 100644 --- a/include/boost/type_traits/object_traits.hpp +++ b/include/boost/type_traits/object_traits.hpp @@ -311,7 +311,7 @@ private: typedef ::boost::detail::empty_helper_chooser< ::boost::type_traits::ice_and< ::boost::type_traits::ice_not< - ::boost::is_convertible::value>::value, + ::boost::is_reference::value>::value, ::boost::type_traits::ice_not< ::boost::is_convertible::value>::value, ::boost::type_traits::ice_not< diff --git a/include/boost/type_traits/type_traits_test.hpp b/include/boost/type_traits/type_traits_test.hpp index 0fe5a0c..c0d6921 100644 --- a/include/boost/type_traits/type_traits_test.hpp +++ b/include/boost/type_traits/type_traits_test.hpp @@ -280,8 +280,17 @@ typedef const r_type cr_type; # endif // BOOST_MSVC struct POD_UDT { int x; }; -struct empty_UDT{ ~empty_UDT(){}; }; -struct empty_POD_UDT{}; +struct empty_UDT +{ + ~empty_UDT(){}; + bool operator==(const empty_UDT&)const + { return true; } +}; +struct empty_POD_UDT +{ + bool operator==(const empty_POD_UDT&)const + { return true; } +}; union union_UDT { int x; diff --git a/tests/object_type_traits_test.cpp b/tests/object_type_traits_test.cpp index ad6e13d..be54934 100644 --- a/tests/object_type_traits_test.cpp +++ b/tests/object_type_traits_test.cpp @@ -203,6 +203,7 @@ int cpp_main(int argc, char* argv[]) #endif soft_value_test(true, boost::is_empty::value) soft_value_test(false, boost::is_empty::value) + soft_value_test(false, boost::is_empty::value) return check_result(argc, argv); }