c++ port of deque underway

[SVN r77808]
This commit is contained in:
Joel de Guzman
2012-04-07 09:56:07 +00:00
parent e15c27bc8b
commit 93ce3bd9bf
10 changed files with 49 additions and 41 deletions

View File

@ -2,7 +2,7 @@
Copyright (c) 2005-2012 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
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)
==============================================================================*/
#if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017)
@ -19,15 +19,15 @@
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
namespace boost { namespace fusion {
namespace boost { namespace fusion {
struct deque_tag;
namespace extension
namespace extension
{
template<typename T>
struct at_impl;
template<>
struct at_impl<deque_tag>
{
@ -37,10 +37,13 @@ namespace boost { namespace fusion {
typedef typename Sequence::next_up next_up;
typedef typename Sequence::next_down next_down;
BOOST_MPL_ASSERT_RELATION(next_down::value, !=, next_up::value);
typedef mpl::plus<next_down, mpl::int_<1> > offset;
typedef mpl::int_<mpl::plus<N, offset>::value> adjusted_index;
typedef typename detail::keyed_element_value_at<Sequence, adjusted_index>::type element_type;
static int const offset = next_down::value + 1;
typedef mpl::int_<(N::value + offset)> adjusted_index;
typedef typename
detail::keyed_element_value_at<Sequence, adjusted_index>::type
element_type;
typedef typename add_reference<
typename mpl::eval_if<
is_const<Sequence>,