Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/python/detail/if_else.hpp @ 60:01e6213c3f91
Merge
author | Chris Cannam |
---|---|
date | Fri, 12 Sep 2014 08:17:00 +0100 |
parents | 2665513ce2d3 |
children |
line wrap: on
line source
// Copyright David Abrahams 2002. // 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 IF_ELSE_DWA2002322_HPP # define IF_ELSE_DWA2002322_HPP # include <boost/config.hpp> namespace boost { namespace python { namespace detail { template <class T> struct elif_selected; template <class T> struct if_selected { template <bool b> struct elif : elif_selected<T> { }; template <class U> struct else_ { typedef T type; }; }; # if defined(BOOST_MSVC) && (BOOST_MSVC == 1300) namespace msvc70_aux { template< bool > struct inherit_from { template< typename T > struct result { typedef T type; }; }; template<> struct inherit_from<true> { template< typename T > struct result { struct type {}; }; }; template< typename T > struct never_true { BOOST_STATIC_CONSTANT(bool, value = false); }; } // namespace msvc70_aux #endif // # if defined(BOOST_MSVC) && (BOOST_MSVC == 1300) template <class T> struct elif_selected { # if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__MWERKS__) && __MWERKS__ <= 0x2407) template <class U> class then; # elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300) template <class U> struct then : msvc70_aux::inherit_from< msvc70_aux::never_true<U>::value > ::template result< if_selected<T> >::type { }; # else template <class U> struct then : if_selected<T> { }; # endif }; # if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__MWERKS__) && __MWERKS__ <= 0x2407) template <class T> template <class U> class elif_selected<T>::then : public if_selected<T> { }; # endif template <bool b> struct if_ { template <class T> struct then : if_selected<T> { }; }; struct if_unselected { template <bool b> struct elif : if_<b> { }; template <class U> struct else_ { typedef U type; }; }; template <> struct if_<false> { template <class T> struct then : if_unselected { }; }; }}} // namespace boost::python::detail #endif // IF_ELSE_DWA2002322_HPP