diff options
author | Tobias Markmann <tm@ayena.de> | 2014-10-19 20:22:58 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-20 13:49:33 (GMT) |
commit | 6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch) | |
tree | 2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/fusion/container/list | |
parent | 38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff) | |
download | swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2 |
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0.
Updated our update.sh script to stop on error.
Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to
missing include of <iostream> with newer Boost.
Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/fusion/container/list')
18 files changed, 136 insertions, 48 deletions
diff --git a/3rdParty/Boost/src/boost/fusion/container/list/cons.hpp b/3rdParty/Boost/src/boost/fusion/container/list/cons.hpp index 666b536..1de7048 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/cons.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/cons.hpp @@ -8,12 +8,14 @@ #if !defined(FUSION_CONS_07172005_0843) #define FUSION_CONS_07172005_0843 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/cons_fwd.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/container/list/nil.hpp> #include <boost/fusion/container/list/cons_iterator.hpp> #include <boost/fusion/container/list/detail/begin_impl.hpp> #include <boost/fusion/container/list/detail/end_impl.hpp> @@ -34,29 +36,7 @@ namespace boost { namespace fusion struct forward_traversal_tag; struct fusion_sequence_tag; - struct nil : sequence_base<nil> - { - typedef mpl::int_<0> size; - typedef cons_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef forward_traversal_tag category; - typedef void_ car_type; - typedef void_ cdr_type; - - nil() {} - - template <typename Iterator> - nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) - {} - - template <typename Iterator> - void assign_from_iter(Iterator const& /*iter*/) - { - } - }; - - template <typename Car, typename Cdr /*= nil*/> + template <typename Car, typename Cdr /*= nil_*/> struct cons : sequence_base<cons<Car, Cdr> > { typedef mpl::int_<Cdr::size::value+1> size; @@ -67,25 +47,31 @@ namespace boost { namespace fusion typedef Car car_type; typedef Cdr cdr_type; + BOOST_FUSION_GPU_ENABLED cons() : car(), cdr() {} + BOOST_FUSION_GPU_ENABLED explicit cons(typename detail::call_param<Car>::type in_car) : car(in_car), cdr() {} + BOOST_FUSION_GPU_ENABLED cons( typename detail::call_param<Car>::type in_car , typename detail::call_param<Cdr>::type in_cdr) : car(in_car), cdr(in_cdr) {} template <typename Car2, typename Cdr2> + BOOST_FUSION_GPU_ENABLED cons(cons<Car2, Cdr2> const& rhs) : car(rhs.car), cdr(rhs.cdr) {} + BOOST_FUSION_GPU_ENABLED cons(cons const& rhs) : car(rhs.car), cdr(rhs.cdr) {} template <typename Sequence> + BOOST_FUSION_GPU_ENABLED cons( Sequence const& seq , typename boost::disable_if< @@ -99,11 +85,13 @@ namespace boost { namespace fusion , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} template <typename Iterator> + BOOST_FUSION_GPU_ENABLED cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) : car(*iter) , cdr(fusion::next(iter), mpl::true_()) {} template <typename Car2, typename Cdr2> + BOOST_FUSION_GPU_ENABLED cons& operator=(cons<Car2, Cdr2> const& rhs) { car = rhs.car; @@ -111,6 +99,7 @@ namespace boost { namespace fusion return *this; } + BOOST_FUSION_GPU_ENABLED cons& operator=(cons const& rhs) { car = rhs.car; @@ -119,6 +108,7 @@ namespace boost { namespace fusion } template <typename Sequence> + BOOST_FUSION_GPU_ENABLED typename boost::disable_if<is_convertible<Sequence, Car>, cons&>::type operator=(Sequence const& seq) { @@ -129,6 +119,7 @@ namespace boost { namespace fusion } template <typename Iterator> + BOOST_FUSION_GPU_ENABLED void assign_from_iter(Iterator const& iter) { car = *iter; diff --git a/3rdParty/Boost/src/boost/fusion/container/list/cons_fwd.hpp b/3rdParty/Boost/src/boost/fusion/container/list/cons_fwd.hpp index 80bb044..547c42c 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/cons_fwd.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/cons_fwd.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2005 Eric Niebler - 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_CONS_FWD_HPP_INCLUDED) @@ -10,9 +10,12 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; + #ifndef nil + typedef nil_ nil; + #endif - template <typename Car, typename Cdr = nil> + template <typename Car, typename Cdr = nil_> struct cons; }} diff --git a/3rdParty/Boost/src/boost/fusion/container/list/cons_iterator.hpp b/3rdParty/Boost/src/boost/fusion/container/list/cons_iterator.hpp index bc4fa09..42c023c 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/cons_iterator.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/cons_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONS_ITERATOR_07172005_0849) #define FUSION_CONS_ITERATOR_07172005_0849 +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/add_const.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/container/list/detail/deref_impl.hpp> @@ -18,14 +19,14 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_iterator_tag; struct forward_traversal_tag; template <typename Cons> struct cons_iterator_identity; - template <typename Cons = nil> + template <typename Cons = nil_> struct cons_iterator : iterator_base<cons_iterator<Cons> > { typedef cons_iterator_tag fusion_tag; @@ -35,6 +36,7 @@ namespace boost { namespace fusion typename add_const<Cons>::type> identity; + BOOST_FUSION_GPU_ENABLED explicit cons_iterator(cons_type& in_cons) : cons(in_cons) {} @@ -49,40 +51,50 @@ namespace boost { namespace fusion { typedef forward_traversal_tag category; typedef cons_iterator_tag fusion_tag; - typedef nil cons_type; + typedef nil_ cons_type; typedef cons_iterator_identity< - add_const<nil>::type> + add_const<nil_>::type> identity; + BOOST_FUSION_GPU_ENABLED nil_iterator() {} - explicit nil_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit nil_iterator(nil_ const&) {} }; template <> - struct cons_iterator<nil> : nil_iterator + struct cons_iterator<nil_> : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> - struct cons_iterator<nil const> : nil_iterator + struct cons_iterator<nil_ const> : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator<list<> > : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator<list<> const> : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; }} diff --git a/3rdParty/Boost/src/boost/fusion/container/list/convert.hpp b/3rdParty/Boost/src/boost/fusion/container/list/convert.hpp index f356d7e..f34ad39 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/convert.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/convert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CONVERT_09232005_1215) #define FUSION_CONVERT_09232005_1215 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/cons.hpp> #include <boost/fusion/container/list/detail/build_cons.hpp> #include <boost/fusion/container/list/detail/convert_impl.hpp> @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename build_cons::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { @@ -39,6 +41,7 @@ namespace boost { namespace fusion } template <typename Sequence> + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_list<Sequence>::type as_list(Sequence& seq) { @@ -46,6 +49,7 @@ namespace boost { namespace fusion } template <typename Sequence> + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_list<Sequence const>::type as_list(Sequence const& seq) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/at_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/at_impl.hpp index 7574639..b768852 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/at_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_AT_IMPL_07172005_0726) #define FUSION_AT_IMPL_07172005_0726 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/type_traits/add_const.hpp> @@ -106,6 +107,7 @@ namespace boost { namespace fusion type; template <typename Cons, int N2> + BOOST_FUSION_GPU_ENABLED static type call(Cons& s, mpl::int_<N2>) { @@ -113,12 +115,14 @@ namespace boost { namespace fusion } template <typename Cons> + BOOST_FUSION_GPU_ENABLED static type call(Cons& s, mpl::int_<0>) { return s.car; } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/begin_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/begin_impl.hpp index 571e681..a302234 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/begin_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/begin_impl.hpp @@ -8,12 +8,13 @@ #if !defined(FUSION_BEGIN_IMPL_07172005_0824) #define FUSION_BEGIN_IMPL_07172005_0824 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/if.hpp> #include <boost/type_traits/is_const.hpp> namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_tag; @@ -36,6 +37,7 @@ namespace boost { namespace fusion { typedef cons_iterator<Sequence> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& t) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/build_cons.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/build_cons.hpp index ef48652..0f40700 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/build_cons.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/build_cons.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BUILD_CONS_09232005_1222) #define FUSION_BUILD_CONS_09232005_1222 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/cons.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/fusion/iterator/next.hpp> @@ -24,12 +25,13 @@ namespace boost { namespace fusion { namespace detail template <typename First, typename Last> struct build_cons<First, Last, true> { - typedef nil type; + typedef nil_ type; - static nil + BOOST_FUSION_GPU_ENABLED + static nil_ call(First const&, Last const&) { - return nil(); + return nil_(); } }; @@ -45,6 +47,7 @@ namespace boost { namespace fusion { namespace detail , typename next_build_cons::type> type; + BOOST_FUSION_GPU_ENABLED static type call(First const& f, Last const& l) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/convert_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/convert_impl.hpp index 19e5fc2..000280e 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/convert_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/convert_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONVERT_IMPL_09232005_1215) #define FUSION_CONVERT_IMPL_09232005_1215 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/cons.hpp> #include <boost/fusion/container/list/detail/build_cons.hpp> #include <boost/fusion/sequence/intrinsic/empty.hpp> @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename build_cons::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/deref_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/deref_impl.hpp index a5f75ea..aefffd7 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/deref_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DEREF_IMPL_07172005_0831) #define FUSION_DEREF_IMPL_07172005_0831 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/eval_if.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/type_traits/add_const.hpp> @@ -37,6 +38,7 @@ namespace boost { namespace fusion , add_reference<value_type> >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/empty_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/empty_impl.hpp index 5c92c73..e25eab0 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/empty_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/empty_impl.hpp @@ -7,13 +7,15 @@ #if !defined(BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/is_convertible.hpp> +#include <boost/fusion/container/list/nil.hpp> namespace boost { namespace fusion { struct cons_tag; - struct nil; + struct nil_; template <typename Car, typename Cdr> struct cons; @@ -28,7 +30,7 @@ namespace boost { namespace fusion { template <typename Sequence> struct apply - : boost::is_convertible<Sequence, nil> + : boost::is_convertible<Sequence, nil_> {}; }; } diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/end_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/end_impl.hpp index 3792250..9220d24 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/end_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/end_impl.hpp @@ -8,12 +8,13 @@ #if !defined(FUSION_END_IMPL_07172005_0828) #define FUSION_END_IMPL_07172005_0828 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/if.hpp> #include <boost/type_traits/is_const.hpp> namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_tag; @@ -35,9 +36,10 @@ namespace boost { namespace fusion struct apply { typedef cons_iterator< - typename mpl::if_<is_const<Sequence>, nil const, nil>::type> + typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence&) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/equal_to_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/equal_to_impl.hpp index a4d5929..0cbb6be 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/equal_to_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/equal_to_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120) #define FUSION_EQUAL_TO_IMPL_09172005_1120 +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/is_same.hpp> #include <boost/mpl/equal_to.hpp> #include <boost/mpl/and.hpp> diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/next_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/next_impl.hpp index 71006e5..7383a96 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/next_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_07172005_0836) #define FUSION_NEXT_IMPL_07172005_0836 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/mpl/eval_if.hpp> @@ -44,6 +45,7 @@ namespace boost { namespace fusion >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/reverse_cons.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/reverse_cons.hpp index 59178e8..f80e2c2 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/reverse_cons.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/reverse_cons.hpp @@ -7,12 +7,13 @@ #if !defined(BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED) #define BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/cons_fwd.hpp> namespace boost { namespace fusion { namespace detail { //////////////////////////////////////////////////////////////////////////// - template<typename Cons, typename State = nil> + template<typename Cons, typename State = nil_> struct reverse_cons; template<typename Car, typename Cdr, typename State> @@ -21,6 +22,7 @@ namespace boost { namespace fusion { namespace detail typedef reverse_cons<Cdr, cons<Car, State> > impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(cons<Car, Cdr> const &cons, State const &state = State()) { typedef fusion::cons<Car, State> cdr_type; @@ -29,11 +31,12 @@ namespace boost { namespace fusion { namespace detail }; template<typename State> - struct reverse_cons<nil, State> + struct reverse_cons<nil_, State> { typedef State type; - static State const &call(nil const &, State const &state = State()) + BOOST_FUSION_GPU_ENABLED + static State const &call(nil_ const &, State const &state = State()) { return state; } diff --git a/3rdParty/Boost/src/boost/fusion/container/list/detail/value_at_impl.hpp b/3rdParty/Boost/src/boost/fusion/container/list/detail/value_at_impl.hpp index 353f8d5..ea9a859 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/detail/value_at_impl.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_07172005_0952) #define FUSION_VALUE_AT_IMPL_07172005_0952 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/type_traits/is_const.hpp> #include <boost/mpl/eval_if.hpp> diff --git a/3rdParty/Boost/src/boost/fusion/container/list/limits.hpp b/3rdParty/Boost/src/boost/fusion/container/list/limits.hpp index 1d545ba..cc64ad7 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/limits.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/limits.hpp @@ -7,6 +7,8 @@ #if !defined(FUSION_LIST_LIMITS_07172005_0112) #define FUSION_LIST_LIMITS_07172005_0112 +#include <boost/fusion/support/detail/pp_round.hpp> + #if !defined(FUSION_MAX_LIST_SIZE) # define FUSION_MAX_LIST_SIZE 10 #else diff --git a/3rdParty/Boost/src/boost/fusion/container/list/list_fwd.hpp b/3rdParty/Boost/src/boost/fusion/container/list/list_fwd.hpp index a142689..d827d28 100644 --- a/3rdParty/Boost/src/boost/fusion/container/list/list_fwd.hpp +++ b/3rdParty/Boost/src/boost/fusion/container/list/list_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_LIST_FORWARD_07172005_0224) #define FUSION_LIST_FORWARD_07172005_0224 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/list/limits.hpp> #include <boost/preprocessor/repetition/enum_params_with_a_default.hpp> diff --git a/3rdParty/Boost/src/boost/fusion/container/list/nil.hpp b/3rdParty/Boost/src/boost/fusion/container/list/nil.hpp new file mode 100644 index 0000000..c94186d --- /dev/null +++ b/3rdParty/Boost/src/boost/fusion/container/list/nil.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005, 2014 Eric Niebler + + 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(FUSION_NIL_04232014_0843) +#define FUSION_NIL_04232014_0843 + +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/container/list/cons_fwd.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/mpl/int.hpp> +#include <boost/mpl/bool.hpp> + +namespace boost { namespace fusion +{ + struct void_; + struct cons_tag; + struct forward_traversal_tag; + struct fusion_sequence_tag; + + struct nil_ : sequence_base<nil_> + { + typedef mpl::int_<0> size; + typedef cons_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef forward_traversal_tag category; + typedef void_ car_type; + typedef void_ cdr_type; + + BOOST_FUSION_GPU_ENABLED + nil_() {} + + template <typename Iterator> + BOOST_FUSION_GPU_ENABLED + nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) + {} + + template <typename Iterator> + BOOST_FUSION_GPU_ENABLED + void assign_from_iter(Iterator const& /*iter*/) + { + } + }; +}} + +#endif + |