/*============================================================================= Copyright (c) 2003 Joel de Guzman Use, modification and distribution is subject to 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(FUSION_ITERATOR_NEXT_HPP) #define FUSION_ITERATOR_NEXT_HPP #include #include namespace boost { namespace fusion { namespace meta { template struct next_impl { template struct apply { // VC6 needs this typedef int type; }; }; template struct next { typedef as_fusion_iterator converter; typedef typename converter::type iter; typedef typename next_impl:: template apply::type type; }; } template inline typename meta::next::type next(Iterator const& i) { typedef as_fusion_iterator converter; typedef typename converter::type iter; return meta::next_impl:: template apply::call(converter::convert(i)); } }} #endif