summaryrefslogtreecommitdiff
path: root/boost/type_traits/detail/has_prefix_operator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/type_traits/detail/has_prefix_operator.hpp')
-rw-r--r--boost/type_traits/detail/has_prefix_operator.hpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/boost/type_traits/detail/has_prefix_operator.hpp b/boost/type_traits/detail/has_prefix_operator.hpp
index e1cf8d054f..d4574fc60d 100644
--- a/boost/type_traits/detail/has_prefix_operator.hpp
+++ b/boost/type_traits/detail/has_prefix_operator.hpp
@@ -7,7 +7,7 @@
// See http://www.boost.org/libs/type_traits for most recent version including documentation.
#include <boost/config.hpp>
-#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
#include <boost/type_traits/integral_constant.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/is_fundamental.hpp>
@@ -19,9 +19,6 @@
#include <boost/type_traits/remove_pointer.hpp>
#include <boost/type_traits/remove_reference.hpp>
-// should be the last #include
-#include <boost/type_traits/detail/bool_trait_def.hpp>
-
// cannot include this header without getting warnings of the kind:
// gcc:
// warning: value computed is not used
@@ -34,9 +31,14 @@
# pragma GCC system_header
#elif defined(BOOST_MSVC)
# pragma warning ( push )
-# pragma warning ( disable : 4146 4804 4913 4244 )
+# pragma warning ( disable : 4146 4804 4913 4244)
+# if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
+# pragma warning ( disable : 6334)
+# endif
#endif
+
+
namespace boost {
namespace detail {
@@ -171,13 +173,7 @@ struct trait_impl1 < Rhs, Ret, true > {
template < typename Rhs, typename Ret >
struct trait_impl1 < Rhs, Ret, false > {
BOOST_STATIC_CONSTANT(bool,
- value = (
- ::boost::type_traits::ice_and<
- operator_exists < Rhs >::value,
- operator_returns_Ret < Rhs, Ret, operator_returns_void < Rhs >::value >::value
- >::value
- )
- );
+ value = (operator_exists < Rhs >::value && operator_returns_Ret < Rhs, Ret, operator_returns_void < Rhs >::value >::value));
};
// specialization needs to be declared for the special void case
@@ -199,12 +195,11 @@ struct trait_impl {
} // namespace detail
// this is the accessible definition of the trait to end user
-BOOST_TT_AUX_BOOL_TRAIT_DEF2(BOOST_TT_TRAIT_NAME, Rhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl < Rhs, Ret >::value))
+template <class Rhs, class Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care>
+struct BOOST_TT_TRAIT_NAME : public integral_constant<bool, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME, _impl)::trait_impl < Rhs, Ret >::value)>{};
} // namespace boost
#if defined(BOOST_MSVC)
# pragma warning ( pop )
#endif
-
-#include <boost/type_traits/detail/bool_trait_undef.hpp>