1 /*=============================================================================
2     Copyright (c) 2001-2011 Joel de Guzman
3     Copyright (c) 2005, 2014 Eric Niebler
4 
5     Distributed under the Boost Software License, Version 1.0. (See accompanying
6     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 #if !defined(FUSION_NIL_04232014_0843)
9 #define FUSION_NIL_04232014_0843
10 
11 #include <boost/fusion/support/config.hpp>
12 #include <boost/fusion/container/list/cons_fwd.hpp>
13 #include <boost/fusion/support/sequence_base.hpp>
14 #include <boost/mpl/int.hpp>
15 #include <boost/mpl/bool.hpp>
16 
17 namespace boost { namespace fusion
18 {
19     struct void_;
20     struct cons_tag;
21     struct forward_traversal_tag;
22     struct fusion_sequence_tag;
23 
24     struct nil_ : sequence_base<nil_>
25     {
26         typedef mpl::int_<0> size;
27         typedef cons_tag fusion_tag;
28         typedef fusion_sequence_tag tag; // this gets picked up by MPL
29         typedef mpl::false_ is_view;
30         typedef forward_traversal_tag category;
31         typedef void_ car_type;
32         typedef void_ cdr_type;
33 
34         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
nil_boost::fusion::nil_35         nil_() BOOST_NOEXCEPT {}
36 
37         template <typename Iterator>
38         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
nil_boost::fusion::nil_39         nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) BOOST_NOEXCEPT
40         {}
41 
42         template <typename Iterator>
43         BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
assign_from_iterboost::fusion::nil_44         void assign_from_iter(Iterator const& /*iter*/) BOOST_NOEXCEPT
45         {
46         }
47     };
48 }}
49 
50 #endif
51 
52