File indexing completed on 2025-12-16 09:49:45
0001
0002
0003
0004
0005
0006
0007 #if !defined(BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM)
0008 #define BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM
0009
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/support/iterator_base.hpp>
0012 #include <boost/fusion/support/category_of.hpp>
0013 #include <boost/fusion/sequence/intrinsic/begin.hpp>
0014 #include <boost/fusion/sequence/intrinsic/end.hpp>
0015
0016 #include <boost/fusion/view/nview/detail/size_impl.hpp>
0017 #include <boost/fusion/view/nview/detail/begin_impl.hpp>
0018 #include <boost/fusion/view/nview/detail/end_impl.hpp>
0019 #include <boost/fusion/view/nview/detail/deref_impl.hpp>
0020 #include <boost/fusion/view/nview/detail/value_of_impl.hpp>
0021 #include <boost/fusion/view/nview/detail/next_impl.hpp>
0022 #include <boost/fusion/view/nview/detail/prior_impl.hpp>
0023 #include <boost/fusion/view/nview/detail/at_impl.hpp>
0024 #include <boost/fusion/view/nview/detail/value_at_impl.hpp>
0025 #include <boost/fusion/view/nview/detail/advance_impl.hpp>
0026 #include <boost/fusion/view/nview/detail/distance_impl.hpp>
0027 #include <boost/fusion/view/nview/detail/equal_to_impl.hpp>
0028
0029 #ifdef _MSC_VER
0030 # pragma warning(push)
0031 # pragma warning(disable: 4512)
0032 #endif
0033
0034 namespace boost { namespace fusion
0035 {
0036 struct nview_iterator_tag;
0037 struct random_access_traversal_tag;
0038
0039 template<typename Sequence, typename Pos>
0040 struct nview_iterator
0041 : iterator_base<nview_iterator<Sequence, Pos> >
0042 {
0043 typedef nview_iterator_tag fusion_tag;
0044 typedef random_access_traversal_tag category;
0045
0046 typedef Sequence sequence_type;
0047 typedef Pos first_type;
0048
0049 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0050 explicit nview_iterator(Sequence& in_seq)
0051 : seq(in_seq) {}
0052
0053 Sequence& seq;
0054 };
0055
0056 }}
0057
0058 #ifdef _MSC_VER
0059 # pragma warning(pop)
0060 #endif
0061
0062 #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
0063 namespace std
0064 {
0065 template <typename Sequence, typename Pos>
0066 struct iterator_traits< ::boost::fusion::nview_iterator<Sequence, Pos> >
0067 { };
0068 }
0069 #endif
0070
0071 #endif
0072
0073