diff options
Diffstat (limited to 'boost/fusion/container/deque/detail/value_at_impl.hpp')
-rw-r--r-- | boost/fusion/container/deque/detail/value_at_impl.hpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/boost/fusion/container/deque/detail/value_at_impl.hpp b/boost/fusion/container/deque/detail/value_at_impl.hpp index 64dbe5e16f..cba31a3e0a 100644 --- a/boost/fusion/container/deque/detail/value_at_impl.hpp +++ b/boost/fusion/container/deque/detail/value_at_impl.hpp @@ -1,8 +1,8 @@ /*============================================================================= - Copyright (c) 2005-2011 Joel de Guzman + 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_VALUE_AT_IMPL_08122006_0756) @@ -13,15 +13,15 @@ #include <boost/mpl/equal_to.hpp> #include <boost/mpl/assert.hpp> -namespace boost { namespace fusion { - +namespace boost { namespace fusion +{ struct deque_tag; - namespace extension + namespace extension { template<typename T> struct value_at_impl; - + template<> struct value_at_impl<deque_tag> { @@ -31,10 +31,12 @@ 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 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 + type; }; }; } |