Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57282 - in sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail: . pp
From: mr.chr.schmidt_at_[hidden]
Date: 2009-11-01 19:44:10


Author: cschmidt
Date: 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
New Revision: 57282
URL: http://svn.boost.org/trac/boost/changeset/57282

Log:
spirit fixes (6)
Added:
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/pp/as_nview.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp (contents, props changed)

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/advance_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_ADVANCE_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_ADVANCE_IMPL_HPP
+
+#include <boost/mpl/advance.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct advance_impl;
+
+ template<>
+ struct advance_impl<nview_iterator_tag>
+ {
+ template<typename It, typename N>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It>::type it;
+
+ typedef
+ nview_iterator<
+ typename it::seq_type
+ , typename mpl::advance<typename it::pos_type, N>::type
+ >
+ type;
+
+ static type
+ call(It it)
+ {
+ return type(it.seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/at_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_AT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct at_impl;
+
+ template<>
+ struct at_impl<nview_tag>
+ {
+ template<typename Seq, typename N>
+ struct apply
+ {
+ typedef typename detail::remove_reference<Seq>::type seq;
+ typedef typename mpl::at<typename seq::indices, N>::type index;
+
+ typedef typename
+ result_of::at<typename seq::seq_type,index>::type
+ type;
+
+ static type
+ call(Seq seq)
+ {
+ return fusion::at<index>(seq.seq.get());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/begin_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/mpl/begin.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct begin_impl;
+
+ template<>
+ struct begin_impl<nview_tag>
+ {
+ template<typename Seq>
+ struct apply
+ {
+ typedef typename detail::remove_reference<Seq>::type seq;
+
+ typedef
+ nview_iterator<
+ typename detail::add_lref<
+ typename seq::storage_type::type
+ >::type
+ , typename mpl::begin<typename seq::indices>::type
+ >
+ type;
+
+ static type
+ call(Seq seq)
+ {
+ return type(seq.seq.get());
+ }
+ };
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/deref_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct deref_impl;
+
+ template<>
+ struct deref_impl<nview_iterator_tag>
+ {
+ template<typename It>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It>::type it;
+ typedef typename mpl::deref<typename it::pos_type>::type index;
+
+ typedef typename
+ result_of::at<typename it::seq_type, index>::type
+ type;
+
+ static type
+ call(It it)
+ {
+ return fusion::at<index>(it.seq);
+ }
+ };
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/distance_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_DISTANCE_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_DISTANCE_IMPL_HPP
+
+#include <boost/mpl/distance.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct distance_impl;
+
+ template<>
+ struct distance_impl<nview_iterator_tag>
+ {
+ template<typename It1, typename It2>
+ struct apply
+ : mpl::distance<
+ typename detail::remove_reference<It1>::type::pos_type
+ , typename detail::remove_reference<It2>::type::pos_type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/end_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_END_IMPL_HPP
+
+#include <boost/mpl/end.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct end_impl;
+
+ template<>
+ struct end_impl<nview_tag>
+ {
+ template<typename Seq>
+ struct apply
+ {
+ typedef typename detail::remove_reference<Seq>::type seq;
+
+ typedef
+ nview_iterator<
+ typename detail::add_lref<
+ typename seq::storage_type::type
+ >::type
+ , typename mpl::end<typename seq::indices>::type
+ >
+ type;
+
+ static type
+ call(Seq seq)
+ {
+ return type(seq.seq.get());
+ }
+ };
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/equal_to_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_EQUAL_TO_IMPL_HPP
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct equal_to_impl;
+
+ template<>
+ struct equal_to_impl<nview_iterator_tag>
+ {
+ template<typename It1, typename It2>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It1>::type it1;
+ typedef typename detail::remove_reference<It2>::type it2;
+
+ typedef
+ mpl::and_<
+ is_same<
+ typename detail::identity<typename it1::seq_type>::type
+ , typename detail::identity<typename it2::seq_type>::type
+ >
+ , mpl::equal_to<
+ typename it1::pos_type
+ , typename it2::pos_type
+ >
+ >
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/next_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_NEXT_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_NEXT_IMPL_HPP
+
+#include <boost/mpl/next.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<nview_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It>::type it;
+
+ typedef
+ nview_iterator<
+ typename it::seq_type,
+ typename mpl::next<typename it::pos_type>::type
+ >
+ type;
+
+ static type
+ call(It it)
+ {
+ return type(it.seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_fwd.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,16 @@
+/*=============================================================================
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_NVIEW_FWD_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_NVIEW_FWD_HPP
+
+namespace boost { namespace fusion
+{
+ struct nview_tag;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/nview_iterator.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_NVIEW_ITERATOR_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_NVIEW_ITERATOR_HPP
+
+#include <boost/fusion/support/iterator_base.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nview_iterator_tag;
+
+ template<typename SeqRef, typename Pos>
+ struct nview_iterator
+ : iterator_base<nview_iterator<SeqRef, Pos> >
+ {
+ typedef SeqRef seq_type;
+ typedef Pos pos_type;
+
+ typedef nview_iterator_tag fusion_tag;
+ typedef random_access_traversal_tag category;
+
+ explicit
+ nview_iterator(SeqRef seq)
+ : seq(seq)
+ {}
+
+ SeqRef seq;
+ };
+
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/pp/as_nview.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/pp/as_nview.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+ Copyright (c) 2009 Christopher Schmidt
+
+ 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)
+==============================================================================*/
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template<
+ typename Seq
+#if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, int I)
+#endif
+ >
+ struct as_nview
+#if BOOST_FUSION_N!=FUSION_MAX_VECTOR_SIZE
+ <
+ Seq
+# if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+# endif
+ >
+#endif
+ {
+ typedef
+ nview<
+ Seq
+ , mpl::BOOST_PP_CAT(BOOST_PP_CAT(vector,BOOST_FUSION_N),_c)<
+ int
+#if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+#endif
+ >
+ >
+ type;
+ };
+ }
+
+ template<
+#if BOOST_FUSION_N
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, int I),
+#endif
+ typename Seq
+ >
+ typename result_of::as_nview<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+#if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+#endif
+ >::type
+ as_nview(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename result_of::as_nview<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+#if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+#endif
+ >::type(BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template<
+# if BOOST_FUSION_N
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, int I),
+# endif
+ typename Seq
+ >
+//cschmidt: see https://svn.boost.org/trac/boost/ticket/3305
+# if defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS) || BOOST_WORKAROUND(__GNUC__,<4)
+ typename lazy_disable_if<
+ is_const<Seq>
+ , result_of::as_nview<
+ Seq&
+# if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+# endif
+ >
+ >::type
+# else
+ typename result_of::as_nview<
+ Seq&
+# if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+# endif
+ >::type
+# endif
+ as_nview(Seq& seq)
+ {
+ return typename result_of::as_nview<
+ Seq&
+# if BOOST_FUSION_N
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, I)
+# endif
+ >::type(seq);
+ }
+#endif
+
+#undef BOOST_FUSION_N

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/prior_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_PRIOR_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_PRIOR_IMPL_HPP
+
+#include <boost/mpl/prior.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct prior_impl;
+
+ template <>
+ struct prior_impl<nview_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It>::type it;
+
+ typedef
+ nview_iterator<
+ typename it::seq_type,
+ typename mpl::prior<typename it::pos_type>::type
+ >
+ type;
+
+ static type
+ call(It it)
+ {
+ return type(it.seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_at_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_SIZE_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct value_at_impl;
+
+ template<>
+ struct value_at_impl<nview_tag>
+ {
+ template<typename Seq, typename N>
+ struct apply
+ {
+ typedef typename detail::remove_reference<Seq>::type seq;
+
+ typedef typename
+ result_of::value_at<
+ typename seq::seq_type
+ , typename mpl::at<typename seq::indices, N>::type
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/view/nview/detail/value_of_impl.hpp 2009-11-01 19:44:07 EST (Sun, 01 Nov 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2009 Hartmut Kaiser
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_VIEW_NVIEW_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_VIEW_NVIEW_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename>
+ struct value_of_impl;
+
+ template<>
+ struct value_of_impl<nview_iterator_tag>
+ {
+ template<typename It>
+ struct apply
+ {
+ typedef typename detail::remove_reference<It>::type it;
+
+ typedef typename
+ result_of::value_at<
+ typename it::seq_type
+ , typename mpl::deref<typename it::pos_type>::type
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk