Index: boost/fusion/iterator/detail/segmented_equal_to.hpp
===================================================================
--- boost/fusion/iterator/detail/segmented_equal_to.hpp	(revision 81611)
+++ boost/fusion/iterator/detail/segmented_equal_to.hpp	(working copy)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     namespace detail
     {
@@ -32,7 +32,7 @@
         {};
 
         template <>
-        struct segmented_equal_to<fusion::nil, fusion::nil>
+        struct segmented_equal_to<fusion::nil_, fusion::nil_>
           : mpl::true_
         {};
     }
Index: boost/fusion/iterator/detail/segmented_iterator.hpp
===================================================================
--- boost/fusion/iterator/detail/segmented_iterator.hpp	(revision 81611)
+++ boost/fusion/iterator/detail/segmented_iterator.hpp	(working copy)
@@ -19,7 +19,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     namespace detail
     {
Index: boost/fusion/iterator/detail/segmented_next_impl.hpp
===================================================================
--- boost/fusion/iterator/detail/segmented_next_impl.hpp	(revision 81611)
+++ boost/fusion/iterator/detail/segmented_next_impl.hpp	(working copy)
@@ -83,7 +83,7 @@
         //auto segmented_next_impl_recurse3(stack)
         //{
         //  if (size(stack) == 1)
-        //    return cons(iterator_range(end(car(stack)), end(car(stack))), nil);
+        //    return cons(iterator_range(end(car(stack)), end(car(stack))), nil_);
         //  else
         //    return segmented_next_impl_recurse(stack.cdr);
         //}
Index: boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp
===================================================================
--- boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp	(revision 81611)
+++ boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp	(working copy)
@@ -19,10 +19,10 @@
 {
     //auto segmented_begin( seq )
     //{
-    //    return make_segmented_iterator( segmented_begin_impl( seq, nil ) );
+    //    return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) );
     //}
 
-    template <typename Sequence, typename Nil = fusion::nil>
+    template <typename Sequence, typename Nil = fusion::nil_>
     struct segmented_begin
     {
         typedef
Index: boost/fusion/sequence/intrinsic/detail/segmented_end.hpp
===================================================================
--- boost/fusion/sequence/intrinsic/detail/segmented_end.hpp	(revision 81611)
+++ boost/fusion/sequence/intrinsic/detail/segmented_end.hpp	(working copy)
@@ -18,7 +18,7 @@
     //    return make_segmented_iterator( segmented_end_impl( seq ) );
     //}
 
-    template <typename Sequence, typename Nil = fusion::nil>
+    template <typename Sequence, typename Nil = fusion::nil_>
     struct segmented_end
     {
         typedef
Index: boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp
===================================================================
--- boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp	(revision 81611)
+++ boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp	(working copy)
@@ -70,7 +70,7 @@
     //  switch (size(stack_begin))
     //  {
     //  case 1:
-    //    return nil;
+    //    return nil_;
     //  case 2:
     //    // car(cdr(stack_begin)) is a range over values.
     //    assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
@@ -205,7 +205,7 @@
     template <typename Stack>
     struct make_segment_sequence_front<Stack, 1>
     {
-        typedef typename Stack::cdr_type type; // nil
+        typedef typename Stack::cdr_type type; // nil_
 
         static type call(Stack const &stack)
         {
@@ -218,7 +218,7 @@
     //  switch (size(stack_end))
     //  {
     //  case 1:
-    //    return nil;
+    //    return nil_;
     //  case 2:
     //    // car(cdr(stack_back)) is a range over values.
     //    assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
@@ -348,7 +348,7 @@
     template <typename Stack>
     struct make_segment_sequence_back<Stack, 1>
     {
-        typedef typename Stack::cdr_type type; // nil
+        typedef typename Stack::cdr_type type; // nil_
 
         static type call(Stack const& stack)
         {
Index: boost/fusion/support/segmented_fold_until.hpp
===================================================================
--- boost/fusion/support/segmented_fold_until.hpp	(revision 81611)
+++ boost/fusion/support/segmented_fold_until.hpp	(working copy)
@@ -20,7 +20,7 @@
 {
     //auto segmented_fold_until(seq, state, fun)
     //{
-    //  return first(segmented_fold_until_impl(seq, state, nil, fun));
+    //  return first(segmented_fold_until_impl(seq, state, nil_, fun));
     //}
 
     namespace result_of
@@ -32,7 +32,7 @@
                 detail::segmented_fold_until_impl<
                     Sequence
                   , State
-                  , fusion::nil
+                  , fusion::nil_
                   , Fun
                 >
             filter;
@@ -55,7 +55,7 @@
             typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
         filter;
         
-        return filter::call(seq, state, fusion::nil(), fun);
+        return filter::call(seq, state, fusion::nil_(), fun);
     }
 
     template <typename Sequence, typename State, typename Fun>
@@ -66,7 +66,7 @@
             typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
         filter;
         
-        return filter::call(seq, state, fusion::nil(), fun);
+        return filter::call(seq, state, fusion::nil_(), fun);
     }
 }}
 
Index: boost/fusion/container/generation/make_cons.hpp
===================================================================
--- boost/fusion/container/generation/make_cons.hpp	(revision 81611)
+++ boost/fusion/container/generation/make_cons.hpp	(working copy)
@@ -13,11 +13,11 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     namespace result_of
     {
-        template <typename Car, typename Cdr = nil>
+        template <typename Car, typename Cdr = nil_>
         struct make_cons
         {
             typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;
Index: boost/fusion/container/generation/cons_tie.hpp
===================================================================
--- boost/fusion/container/generation/cons_tie.hpp	(revision 81611)
+++ boost/fusion/container/generation/cons_tie.hpp	(working copy)
@@ -11,11 +11,11 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     namespace result_of
     {
-        template <typename Car, typename Cdr = nil>
+        template <typename Car, typename Cdr = nil_>
         struct cons_tie
         {
             typedef cons<Car&, Cdr> type;
Index: boost/fusion/container/list/cons.hpp
===================================================================
--- boost/fusion/container/list/cons.hpp	(revision 81611)
+++ boost/fusion/container/list/cons.hpp	(working copy)
@@ -34,7 +34,7 @@
     struct forward_traversal_tag;
     struct fusion_sequence_tag;
 
-    struct nil : sequence_base<nil>
+    struct nil_ : sequence_base<nil_>
     {
         typedef mpl::int_<0> size;
         typedef cons_tag fusion_tag;
@@ -44,10 +44,10 @@
         typedef void_ car_type;
         typedef void_ cdr_type;
 
-        nil() {}
+        nil_() {}
 
         template <typename Iterator>
-        nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
+        nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
         {}
 
         template <typename Iterator>
@@ -56,7 +56,7 @@
         }
     };
 
-    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;
Index: boost/fusion/container/list/cons_fwd.hpp
===================================================================
--- boost/fusion/container/list/cons_fwd.hpp	(revision 81611)
+++ boost/fusion/container/list/cons_fwd.hpp	(working copy)
@@ -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;
 }}
 
Index: boost/fusion/container/list/cons_iterator.hpp
===================================================================
--- boost/fusion/container/list/cons_iterator.hpp	(revision 81611)
+++ boost/fusion/container/list/cons_iterator.hpp	(working copy)
@@ -18,14 +18,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;
@@ -49,40 +49,40 @@
     {
         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;
         nil_iterator() {}
-        explicit nil_iterator(nil const&) {}
+        explicit nil_iterator(nil_ const&) {}
     };
 
     template <>
-    struct cons_iterator<nil> : nil_iterator 
+    struct cons_iterator<nil_> : nil_iterator 
     {
         cons_iterator() {}
-        explicit cons_iterator(nil const&) {}
+        explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
-    struct cons_iterator<nil const> : nil_iterator 
+    struct cons_iterator<nil_ const> : nil_iterator 
     {
         cons_iterator() {}
-        explicit cons_iterator(nil const&) {}
+        explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
     struct cons_iterator<list<> > : nil_iterator 
     {
         cons_iterator() {}
-        explicit cons_iterator(nil const&) {}
+        explicit cons_iterator(nil_ const&) {}
     };
 
     template <>
     struct cons_iterator<list<> const> : nil_iterator 
     {
         cons_iterator() {}
-        explicit cons_iterator(nil const&) {}
+        explicit cons_iterator(nil_ const&) {}
     };
 }}
 
Index: boost/fusion/container/list/list.hpp
===================================================================
--- boost/fusion/container/list/list.hpp	(revision 81611)
+++ boost/fusion/container/list/list.hpp	(working copy)
@@ -32,7 +32,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
 
     template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
Index: boost/fusion/container/list/detail/begin_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/begin_impl.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/begin_impl.hpp	(working copy)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     struct cons_tag;
 
Index: boost/fusion/container/list/detail/preprocessed/list10.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list10.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list10.hpp	(working copy)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
     struct list
Index: boost/fusion/container/list/detail/preprocessed/list20.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list20.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list20.hpp	(working copy)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
     struct list
Index: boost/fusion/container/list/detail/preprocessed/list30.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list30.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list30.hpp	(working copy)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
     struct list
Index: boost/fusion/container/list/detail/preprocessed/list40.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list40.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list40.hpp	(working copy)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
     struct list
Index: boost/fusion/container/list/detail/preprocessed/list50.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list50.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list50.hpp	(working copy)
@@ -8,7 +8,7 @@
 ==============================================================================*/
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
     template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
     struct list
Index: boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp	(working copy)
@@ -81,6 +81,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
Index: boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp	(working copy)
@@ -141,6 +141,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
Index: boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp	(working copy)
@@ -201,6 +201,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
Index: boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp	(working copy)
@@ -261,6 +261,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
Index: boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp
===================================================================
--- boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp	(working copy)
@@ -321,6 +321,6 @@
     template <>
     struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
Index: boost/fusion/container/list/detail/empty_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/empty_impl.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/empty_impl.hpp	(working copy)
@@ -13,7 +13,7 @@
 {
     struct cons_tag;
 
-    struct nil;
+    struct nil_;
 
     template <typename Car, typename Cdr>
     struct cons;
@@ -28,7 +28,7 @@
         {
             template <typename Sequence>
             struct apply
-                : boost::is_convertible<Sequence, nil>
+                : boost::is_convertible<Sequence, nil_>
             {};
         };
     }
Index: boost/fusion/container/list/detail/build_cons.hpp
===================================================================
--- boost/fusion/container/list/detail/build_cons.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/build_cons.hpp	(working copy)
@@ -24,12 +24,12 @@
     template <typename First, typename Last>
     struct build_cons<First, Last, true>
     {
-        typedef nil type;
+        typedef nil_ type;
         
-        static nil
+        static nil_
         call(First const&, Last const&)
         {
-            return nil();
+            return nil_();
         }
     };
 
Index: boost/fusion/container/list/detail/end_impl.hpp
===================================================================
--- boost/fusion/container/list/detail/end_impl.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/end_impl.hpp	(working copy)
@@ -13,7 +13,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
 
     struct cons_tag;
 
@@ -35,7 +35,7 @@
             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;
     
                 static type
Index: boost/fusion/container/list/detail/reverse_cons.hpp
===================================================================
--- boost/fusion/container/list/detail/reverse_cons.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/reverse_cons.hpp	(working copy)
@@ -12,7 +12,7 @@
 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>
@@ -29,11 +29,11 @@
     };
 
     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())
+        static State const &call(nil_ const &, State const &state = State())
         {
             return state;
         }
Index: boost/fusion/container/list/detail/list_to_cons.hpp
===================================================================
--- boost/fusion/container/list/detail/list_to_cons.hpp	(revision 81611)
+++ boost/fusion/container/list/detail/list_to_cons.hpp	(working copy)
@@ -18,7 +18,7 @@
 
 namespace boost { namespace fusion
 {
-    struct nil;
+    struct nil_;
     struct void_;
 }}
 
@@ -61,7 +61,7 @@
     template <>
     struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
     {
-        typedef nil type;
+        typedef nil_ type;
     };
 }}}
 
