⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 enable_if.hpp

📁 C++的一个好库。。。现在很流行
💻 HPP
字号:
// 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -