2
0
mirror of https://github.com/boostorg/lambda.git synced 2026-01-30 20:02:15 +00:00

Remove ice_xxx.hpp header and change functionality to use mpl.

This commit is contained in:
Edward Diener
2015-03-31 03:32:50 -04:00
parent 5ba2e0aa6a
commit 11a6698eec

View File

@@ -12,18 +12,17 @@
#ifndef BOOST_LAMBDA_RETURN_TYPE_TRAITS_HPP
#define BOOST_LAMBDA_RETURN_TYPE_TRAITS_HPP
#include "boost/mpl/and.hpp"
#include "boost/mpl/has_xxx.hpp"
#include <boost/type_traits/ice.hpp>
#include "boost/mpl/identity.hpp"
#include "boost/mpl/not.hpp"
#include "boost/mpl/or.hpp"
#include <cstddef> // needed for the ptrdiff_t
namespace boost {
namespace lambda {
using ::boost::type_traits::ice_and;
using ::boost::type_traits::ice_or;
using ::boost::type_traits::ice_not;
// Much of the type deduction code for standard arithmetic types
// from Gary Powell
@@ -79,7 +78,7 @@ public:
typedef typename
detail::IF<
// is_protectable<Act>::value && is_lambda_functor<A>::value,
ice_and<is_protectable<Act>::value, is_lambda_functor<A>::value>::value,
boost::mpl::and_<boost::mpl::identity<is_protectable<Act> >, boost::mpl::identity<is_lambda_functor<A> > >::value,
lambda_functor<
lambda_functor_base<
Act,
@@ -114,8 +113,8 @@ namespace detail {
// the args tuple
typedef typename detail::IF_type<
// boost::is_reference<T>::value && !boost::is_const<non_ref_T>::value,
ice_and<boost::is_reference<T>::value,
ice_not<boost::is_const<non_ref_T>::value>::value>::value,
boost::mpl::and_<boost::is_reference<T>,
boost::mpl::not_<boost::is_const<non_ref_T> > >::value,
detail::identity_mapping<T>,
const_copy_argument<non_ref_T> // handles funtion and array
>::type type; // types correctly
@@ -151,9 +150,9 @@ typedef typename
detail::IF<
// is_protectable<Act>::value &&
// (is_lambda_functor<A>::value || is_lambda_functor<B>::value),
ice_and<is_protectable<Act>::value,
ice_or<is_lambda_functor<A>::value,
is_lambda_functor<B>::value>::value>::value,
boost::mpl::and_<boost::mpl::identity<is_protectable<Act> >,
boost::mpl::or_<boost::mpl::identity<is_lambda_functor<A> >,
boost::mpl::identity<is_lambda_functor<B> > > >::value,
lambda_functor<
lambda_functor_base<
Act,
@@ -190,9 +189,9 @@ typedef typename
detail::IF<
// is_protectable<other_action<comma_action> >::value && // it is protectable
// (is_lambda_functor<A>::value || is_lambda_functor<B>::value),
ice_and<is_protectable<other_action<comma_action> >::value, // it is protectable
ice_or<is_lambda_functor<A>::value,
is_lambda_functor<B>::value>::value>::value,
boost::mpl::and_<boost::mpl::identity<is_protectable<other_action<comma_action> > >, // it is protectable
boost::mpl::or_<boost::mpl::identity<is_lambda_functor<A> >,
boost::mpl::identity<is_lambda_functor<B> > > >::value,
lambda_functor<
lambda_functor_base<
other_action<comma_action>,