struct dont_care;
- template <class T, class U, class Ret, class = boost::void_t<>>
+ template <class T, class U, class Ret, class = void>
struct has_minus_assign_ret_imp : public boost::false_type {};
template <class T, class U, class Ret>
- struct has_minus_assign_ret_imp<T, U, Ret, boost::void_t<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())> >
+ struct has_minus_assign_ret_imp<T, U, Ret, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
: public boost::integral_constant<bool, ::boost::is_convertible<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>()), Ret>::value> {};
- template <class T, class U, class = boost::void_t<> >
+ template <class T, class U, class = void >
struct has_minus_assign_void_imp : public boost::false_type {};
template <class T, class U>
- struct has_minus_assign_void_imp<T, U, boost::void_t<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())> >
+ struct has_minus_assign_void_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
: public boost::integral_constant<bool, ::boost::is_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::value> {};
- template <class T, class U, class = boost::void_t<>>
+ template <class T, class U, class = void>
struct has_minus_assign_dc_imp : public boost::false_type {};
template <class T, class U>
- struct has_minus_assign_dc_imp<T, U, boost::void_t<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())> >
+ struct has_minus_assign_dc_imp<T, U, typename boost::make_void<decltype(std::declval<typename add_reference<T>::type>() -= std::declval<typename add_reference<U>::type>())>::type>
: public boost::true_type {};
template <class T, class U, class Ret>
#undef BOOST_TT_FORBIDDEN_IF
#endif
+
+#if defined(BOOST_MSVC)
+# pragma warning (pop)
+#endif
+
#endif