123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Copyright David Abrahams 2004. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #ifndef ENABLE_IF_DWA2004722_HPP
- # define ENABLE_IF_DWA2004722_HPP
- # include <boost/python/detail/sfinae.hpp>
- # include <boost/detail/workaround.hpp>
- # if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
- # include <boost/mpl/if.hpp>
- namespace boost { namespace python { namespace detail {
- template <class T> struct always_void { typedef void type; };
- template <class C, class T = int>
- struct enable_if_arg
- {
- typedef typename mpl::if_<C,T,int&>::type type;
- };
-
- template <class C, class T = int>
- struct disable_if_arg
- {
- typedef typename mpl::if_<C,int&,T>::type type;
- };
-
- template <class C, class T = typename always_void<C>::type>
- struct enable_if_ret
- {
- typedef typename mpl::if_<C,T,int[2]>::type type;
- };
-
- template <class C, class T = typename always_void<C>::type>
- struct disable_if_ret
- {
- typedef typename mpl::if_<C,int[2],T>::type type;
- };
-
- }}} // namespace boost::python::detail
- # elif !defined(BOOST_NO_SFINAE)
- # include <boost/utility/enable_if.hpp>
- namespace boost { namespace python { namespace detail {
- template <class C, class T = int>
- struct enable_if_arg
- : enable_if<C,T>
- {};
-
- template <class C, class T = int>
- struct disable_if_arg
- : disable_if<C,T>
- {};
-
- template <class C, class T = void>
- struct enable_if_ret
- : enable_if<C,T>
- {};
-
- template <class C, class T = void>
- struct disable_if_ret
- : disable_if<C,T>
- {};
-
- }}} // namespace boost::python::detail
- # endif
- #endif // ENABLE_IF_DWA2004722_HPP
|