diff --git a/include/boost/detail/is_incrementable.hpp b/include/boost/detail/is_incrementable.hpp index f92cca1..5ec7c27 100755 --- a/include/boost/detail/is_incrementable.hpp +++ b/include/boost/detail/is_incrementable.hpp @@ -9,61 +9,8 @@ # include # include # include -# include // BOOST_INTEL # include -# if defined(__GNUC_PATCHLEVEL__) && !defined(BOOST_INTEL) -# define BOOST_IS_INCREMENTABLE_GCC \ - ((__GNUC__ * 100UL + __GNUC_MINOR__) * 100UL + __GNUC_PATCHLEVEL__) \ - /**/ -# else -# define BOOST_IS_INCREMENTABLE_GCC 0 -# endif - -# if BOOST_WORKAROUND(BOOST_IS_INCREMENTABLE_GCC, >= 40002) - -namespace boost { namespace detail { namespace is_incrementable_ { - - // A type returned from operator++ when no increment is found in the - // type's own namespace - struct tag {}; - - // In case an operator++ is found that returns void, we'll use ++x,0 - tag operator,(tag,int); - - // Two check overloads help us identify which operator++ was picked - char (& check(tag) )[2]; - - template - char check(T const&); - - template - struct impl { - template - friend tag operator++(const U&); - template - friend tag operator++(const U&, int); - static typename boost::remove_cv::type& x; - static const bool is_incrementable = - sizeof(is_incrementable_::check((++x,0))) == 1; - static const bool is_postfix_incrementable = - sizeof(is_incrementable_::check((x++,0))) == 1; - }; - -} // namespace is_incrementable_ - -template< typename T, - typename B = typename is_incrementable_::template impl > -struct is_incrementable : mpl::bool_ { }; - -template< typename T, - typename B = typename is_incrementable_::template impl > -struct is_postfix_incrementable : mpl::bool_ { }; - -} } // namespace boost::detail - -# else - namespace boost { namespace detail { // is_incrementable metafunction @@ -152,6 +99,5 @@ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1, ::boost::detail::is_postfix_incrementable) } // namespace boost -# endif // # if BOOST_WORKAROUND(BOOST_IS_INCREMENTABLE_GCC, >= 40002) #endif // IS_INCREMENTABLE_DWA200415_HPP