$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r57504 - in trunk/boost/spirit/home: karma/auxiliary karma/binary karma/char karma/detail karma/directive karma/nonterminal karma/numeric karma/numeric/detail karma/operator karma/stream karma/stream/detail karma/string lex/detail lex/lexer lex/lexer/lexertl lex/qi qi/action qi/auxiliary qi/binary qi/char qi/detail qi/directive qi/nonterminal qi/numeric qi/numeric/detail qi/operator qi/stream/detail qi/string qi/string/detail support support/detail support/iterators/detail support/nonterminal
From: hartmut.kaiser_at_[hidden]
Date: 2009-11-08 23:01:22
Author: hkaiser
Date: 2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
New Revision: 57504
URL: http://svn.boost.org/trac/boost/changeset/57504
Log:
Spirit: silencing MSVC warnings
Text files modified: 
   trunk/boost/spirit/home/karma/auxiliary/eol.hpp                                 |     4 ++--                                    
   trunk/boost/spirit/home/karma/auxiliary/eps.hpp                                 |     8 ++++----                                
   trunk/boost/spirit/home/karma/auxiliary/lazy.hpp                                |     4 ++++                                    
   trunk/boost/spirit/home/karma/binary/binary.hpp                                 |    23 +++++++++++++++++++++--                 
   trunk/boost/spirit/home/karma/binary/padding.hpp                                |     2 +-                                      
   trunk/boost/spirit/home/karma/char/char.hpp                                     |     4 ++--                                    
   trunk/boost/spirit/home/karma/char/char_class.hpp                               |     4 ++--                                    
   trunk/boost/spirit/home/karma/detail/alternative_function.hpp                   |    23 ++++++++++++++++++++---                 
   trunk/boost/spirit/home/karma/detail/fail_function.hpp                          |    12 ++++++++++++                            
   trunk/boost/spirit/home/karma/detail/output_iterator.hpp                        |    12 ++++++------                            
   trunk/boost/spirit/home/karma/detail/pass_container.hpp                         |     4 ++++                                    
   trunk/boost/spirit/home/karma/detail/string_generate.hpp                        |     4 ++--                                    
   trunk/boost/spirit/home/karma/detail/unused_delimiter.hpp                       |     4 ++++                                    
   trunk/boost/spirit/home/karma/directive/center_alignment.hpp                    |     4 ++++                                    
   trunk/boost/spirit/home/karma/directive/left_alignment.hpp                      |     4 ++++                                    
   trunk/boost/spirit/home/karma/directive/maxwidth.hpp                            |     8 ++++++--                                
   trunk/boost/spirit/home/karma/directive/omit.hpp                                |     4 ++--                                    
   trunk/boost/spirit/home/karma/directive/repeat.hpp                              |    14 +++++++++++++-                          
   trunk/boost/spirit/home/karma/directive/right_alignment.hpp                     |     4 ++++                                    
   trunk/boost/spirit/home/karma/nonterminal/rule.hpp                              |     2 +-                                      
   trunk/boost/spirit/home/karma/numeric/bool.hpp                                  |     4 ++--                                    
   trunk/boost/spirit/home/karma/numeric/bool_policies.hpp                         |     4 ++--                                    
   trunk/boost/spirit/home/karma/numeric/detail/bool_utils.hpp                     |     7 +++++++                                 
   trunk/boost/spirit/home/karma/numeric/int.hpp                                   |     4 ++--                                    
   trunk/boost/spirit/home/karma/numeric/real.hpp                                  |     4 ++--                                    
   trunk/boost/spirit/home/karma/numeric/uint.hpp                                  |     4 ++--                                    
   trunk/boost/spirit/home/karma/operator/alternative.hpp                          |     2 +-                                      
   trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp                    |     8 ++++++++                                
   trunk/boost/spirit/home/karma/stream/detail/iterator_sink.hpp                   |     4 ++++                                    
   trunk/boost/spirit/home/karma/stream/stream.hpp                                 |     5 ++++-                                   
   trunk/boost/spirit/home/karma/string/lit.hpp                                    |     4 ++--                                    
   trunk/boost/spirit/home/lex/detail/sequence_function.hpp                        |     8 ++++++++                                
   trunk/boost/spirit/home/lex/lexer/action.hpp                                    |     4 ++++                                    
   trunk/boost/spirit/home/lex/lexer/char_token_def.hpp                            |     2 +-                                      
   trunk/boost/spirit/home/lex/lexer/lexer.hpp                                     |    13 ++++++++++++-                           
   trunk/boost/spirit/home/lex/lexer/lexertl/functor.hpp                           |    10 +++++++---                              
   trunk/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp                      |    18 +++++++++++++++---                      
   trunk/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp                   |    14 +++++++++++---                          
   trunk/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp                |     6 +++++-                                  
   trunk/boost/spirit/home/lex/lexer/lexertl/lexer.hpp                             |    17 +++++++++++++++--                       
   trunk/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp              |     2 +-                                      
   trunk/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp               |    18 +++++++++++++++---                      
   trunk/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp                      |    40 +++++++++++++++++++++++++++-------------
   trunk/boost/spirit/home/lex/lexer/lexertl/token.hpp                             |     8 ++++++--                                
   trunk/boost/spirit/home/lex/lexer/string_token_def.hpp                          |     2 +-                                      
   trunk/boost/spirit/home/lex/lexer/token_def.hpp                                 |     9 +++++----                               
   trunk/boost/spirit/home/lex/qi/state_switcher.hpp                               |    10 +++++++++-                              
   trunk/boost/spirit/home/qi/action/action.hpp                                    |     4 ++++                                    
   trunk/boost/spirit/home/qi/auxiliary/attr.hpp                                   |    10 +++++++---                              
   trunk/boost/spirit/home/qi/auxiliary/attr_cast.hpp                              |     4 ++++                                    
   trunk/boost/spirit/home/qi/auxiliary/eoi.hpp                                    |     6 +++---                                  
   trunk/boost/spirit/home/qi/auxiliary/eol.hpp                                    |     6 +++---                                  
   trunk/boost/spirit/home/qi/auxiliary/eps.hpp                                    |    12 ++++++------                            
   trunk/boost/spirit/home/qi/binary/binary.hpp                                    |    19 +++++++++++++++----                     
   trunk/boost/spirit/home/qi/char/char.hpp                                        |    31 +++++++++++++++++--------------         
   trunk/boost/spirit/home/qi/detail/alternative_function.hpp                      |     8 ++++++++                                
   trunk/boost/spirit/home/qi/detail/assign_to.hpp                                 |     2 +-                                      
   trunk/boost/spirit/home/qi/detail/expect_function.hpp                           |    17 +++++++++++++----                       
   trunk/boost/spirit/home/qi/detail/fail_function.hpp                             |     4 ++++                                    
   trunk/boost/spirit/home/qi/detail/pass_container.hpp                            |     6 +++++-                                  
   trunk/boost/spirit/home/qi/detail/pass_function.hpp                             |     4 ++++                                    
   trunk/boost/spirit/home/qi/detail/permute_function.hpp                          |     4 ++++                                    
   trunk/boost/spirit/home/qi/detail/unused_skipper.hpp                            |     4 ++++                                    
   trunk/boost/spirit/home/qi/directive/omit.hpp                                   |     4 ++++                                    
   trunk/boost/spirit/home/qi/directive/repeat.hpp                                 |    18 +++++++++++++++++-                      
   trunk/boost/spirit/home/qi/nonterminal/debug_handler.hpp                        |     2 +-                                      
   trunk/boost/spirit/home/qi/nonterminal/error_handler.hpp                        |     8 ++++----                                
   trunk/boost/spirit/home/qi/nonterminal/rule.hpp                                 |     2 +-                                      
   trunk/boost/spirit/home/qi/numeric/bool.hpp                                     |     4 ++++                                    
   trunk/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp                     |     4 ++--                                    
   trunk/boost/spirit/home/qi/operator/expect.hpp                                  |    11 +++++++++--                             
   trunk/boost/spirit/home/qi/stream/detail/iterator_source.hpp                    |     4 ++++                                    
   trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp                        |     8 ++++++++                                
   trunk/boost/spirit/home/qi/string/detail/tst.hpp                                |     2 +-                                      
   trunk/boost/spirit/home/qi/string/lit.hpp                                       |    18 +++++++++++++-----                      
   trunk/boost/spirit/home/qi/string/symbols.hpp                                   |    14 +++++++++++---                          
   trunk/boost/spirit/home/support/attributes.hpp                                  |     2 +-                                      
   trunk/boost/spirit/home/support/char_class.hpp                                  |     6 +++---                                  
   trunk/boost/spirit/home/support/detail/what_function.hpp                        |     8 ++++++++                                
   trunk/boost/spirit/home/support/info.hpp                                        |    10 +++++++++-                              
   trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp |     4 ++++                                    
   trunk/boost/spirit/home/support/make_component.hpp                              |     2 +-                                      
   trunk/boost/spirit/home/support/modify.hpp                                      |     2 +-                                      
   trunk/boost/spirit/home/support/multi_pass_wrapper.hpp                          |     2 +-                                      
   trunk/boost/spirit/home/support/nonterminal/expand_arg.hpp                      |     4 ++++                                    
   trunk/boost/spirit/home/support/terminal.hpp                                    |    12 ++++++++++++                            
   86 files changed, 521 insertions(+), 150 deletions(-)
Modified: trunk/boost/spirit/home/karma/auxiliary/eol.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/auxiliary/eol.hpp	(original)
+++ trunk/boost/spirit/home/karma/auxiliary/eol.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -48,14 +48,14 @@
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
         static bool generate(OutputIterator& sink, Context&, Delimiter const& d
-          , Attribute const& attr)
+          , Attribute const& /*attr*/)
         {
             return detail::generate_to(sink, '\n') &&
                    karma::delimit_out(sink, d);   // always do post-delimiting
         }
 
         template <typename Context>
-        info what(Context const& ctx) const
+        info what(Context const& /*context*/) const
         {
             return info("eol");
         }
Modified: trunk/boost/spirit/home/karma/auxiliary/eps.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/auxiliary/eps.hpp	(original)
+++ trunk/boost/spirit/home/karma/auxiliary/eps.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -60,13 +60,13 @@
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
         static bool generate(OutputIterator& sink, Context&, Delimiter const& d
-          , Attribute const& attr)
+          , Attribute const& /*attr*/)
         {
             return karma::delimit_out(sink, d); // always do post-delimiting
         }
 
         template <typename Context>
-        info what(Context const& ctx) const
+        info what(Context const& /*context*/) const
         {
             return info("eps");
         }
@@ -88,14 +88,14 @@
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
-          , Attribute const& attr) const
+          , Attribute const& /*attr*/) const
         {
             // only do post-delimiting when predicate is true
             return predicate_ && karma::delimit_out(sink, d);
         }
 
         template <typename Context>
-        info what(Context const& ctx) const
+        info what(Context const& /*context*/) const
         {
             return info("semantic-predicate");
         }
Modified: trunk/boost/spirit/home/karma/auxiliary/lazy.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/auxiliary/lazy.hpp	(original)
+++ trunk/boost/spirit/home/karma/auxiliary/lazy.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -103,6 +103,10 @@
 
         Function func;
         Modifiers modifiers;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        lazy_generator& operator= (lazy_generator const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/karma/binary/binary.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/binary/binary.hpp	(original)
+++ trunk/boost/spirit/home/karma/binary/binary.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -27,6 +27,7 @@
 #include <boost/mpl/or.hpp>
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_enum.hpp>
+#include <boost/config.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 #define BOOST_SPIRIT_ENABLE_BINARY(name)                                      \
@@ -192,7 +193,17 @@
             boost::integer::endian<
                 endian, typename karma::detail::integer<bits>::type, bits
             > p;
+
+#if defined(BOOST_MSVC)
+// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data
+#pragma warning(push)
+#pragma warning(disable: 4244)
+#endif
             p = traits::extract_from(attr, context);
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
+
             unsigned char const* bytes =
                 reinterpret_cast<unsigned char const*>(&p);
 
@@ -221,7 +232,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return karma::detail::what<endian>::is();
         }
@@ -241,7 +252,15 @@
         template <typename T>
         literal_binary_generator(T const& t)
         {
+#if defined(BOOST_MSVC)
+// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data
+#pragma warning(push)
+#pragma warning(disable: 4244)
+#endif
             data_ = t;
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
         }
 
         template <
@@ -266,7 +285,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return karma::detail::what<endian>::is();
         }
Modified: trunk/boost/spirit/home/karma/binary/padding.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/binary/padding.hpp	(original)
+++ trunk/boost/spirit/home/karma/binary/padding.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -67,7 +67,7 @@
             typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
         bool generate(OutputIterator& sink, Context&, Delimiter const& d
-          , Attribute const& attr) const
+          , Attribute const& /*attr*/) const
         {
             std::size_t count = sink.get_out_count() % numpadbytes_;
             if (count)
Modified: trunk/boost/spirit/home/karma/char/char.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/char/char.hpp	(original)
+++ trunk/boost/spirit/home/karma/char/char.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -131,7 +131,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("any-char");
         }
@@ -183,7 +183,7 @@
         }
 
         template <typename Context>
-        info what(Context const& ctx) const
+        info what(Context const& /*context*/) const
         {
             return info("literal-char", char_encoding::toucs4(ch));
         }
Modified: trunk/boost/spirit/home/karma/char/char_class.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/char/char_class.hpp	(original)
+++ trunk/boost/spirit/home/karma/char/char_class.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -99,7 +99,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             typedef spirit::char_class::what<char_encoding> what_;
             return info(what_::is(classification()));
@@ -144,7 +144,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("space");
         }
Modified: trunk/boost/spirit/home/karma/detail/alternative_function.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/alternative_function.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/alternative_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -25,6 +25,7 @@
 #include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/variant.hpp>
+#include <boost/detail/workaround.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit { namespace karma { namespace detail
@@ -110,6 +111,9 @@
         call(Component const& component, OutputIterator& sink, Context& ctx
           , Delimiter const& d, unused_type)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            component; // suppresses warning: C4100: 'component' : unreferenced formal parameter
+#endif
             // return true if any of the generators succeed
             return component.generate(sink, ctx, d, unused);
         }
@@ -139,6 +143,9 @@
         call(Component const& component, OutputIterator& sink
           , Context& ctx, Delimiter const& d, Attribute const& attr)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            component; // suppresses warning: C4100: 'component' : unreferenced formal parameter
+#endif
             return call(component, sink, ctx, d, attr
               , spirit::traits::not_is_variant<Attribute>());
         }
@@ -148,6 +155,9 @@
         call(Component const& component, OutputIterator& sink
           , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::true_)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            component; // suppresses warning: C4100: 'component' : unreferenced formal parameter
+#endif
             return component.generate(sink, ctx, d, attr);
         }
 
@@ -156,6 +166,9 @@
         call(Component const& component, OutputIterator& sink
           , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::false_)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            component; // suppresses warning: C4100: 'component' : unreferenced formal parameter
+#endif
             typedef
                 compute_compatible_component<Expected, Attribute>
             component_type;
@@ -183,15 +196,15 @@
     };
 
     ///////////////////////////////////////////////////////////////////////////
-    //  alternative_generate_functor: a functor supplied to fusion::any which
+    //  alternative_generate_function: a functor supplied to fusion::any which
     //  will be executed for every generator in a given alternative generator
     //  expression
     ///////////////////////////////////////////////////////////////////////////
     template <typename OutputIterator, typename Context, typename Delimiter,
         typename Attribute>
-    struct alternative_generate_functor
+    struct alternative_generate_function
     {
-        alternative_generate_functor(OutputIterator& sink_, Context& ctx_
+        alternative_generate_function(OutputIterator& sink_, Context& ctx_
             , Delimiter const& d, Attribute const& attr_)
           : sink(sink_), ctx(ctx_), delim(d), attr(attr_) {}
 
@@ -222,6 +235,10 @@
         Context& ctx;
         Delimiter const& delim;
         Attribute const& attr;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        alternative_generate_function& operator= (alternative_generate_function const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/karma/detail/fail_function.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/fail_function.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/fail_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -12,6 +12,7 @@
 #endif
 
 #include <boost/spirit/home/support/unused.hpp>
+#include <boost/config.hpp>
 
 namespace boost { namespace spirit { namespace karma { namespace detail
 {
@@ -25,6 +26,10 @@
           : sink(sink_), ctx(context_), delim(delim_) 
         {}
 
+#if defined(BOOST_MSVC)
+#pragma warning(push)
+#pragma warning(disable: 4100)  // warning C4100: 'component' : unreferenced formal parameter
+#endif
         template <typename Component, typename Attribute>
         bool operator()(Component const& component, Attribute const& attr) const
         {
@@ -38,10 +43,17 @@
             // return true if any of the generators fail
             return !component.generate(sink, ctx, delim, unused);
         }
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
 
         OutputIterator& sink;
         Context& ctx;
         Delimiter const& delim;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        fail_function& operator= (fail_function const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/karma/detail/output_iterator.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/output_iterator.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/output_iterator.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -82,10 +82,10 @@
     struct no_position_policy
     {
         no_position_policy() {}
-        no_position_policy(no_position_policy const& rhs) {}
+        no_position_policy(no_position_policy const&) {}
 
         template <typename T>
-        void output(T const& value) {}
+        void output(T const& /*value*/) {}
     };
 
     ///////////////////////////////////////////////////////////////////////////
@@ -160,10 +160,10 @@
     struct no_counting_policy
     {
         no_counting_policy() {}
-        no_counting_policy(no_counting_policy const& rhs) {}
+        no_counting_policy(no_counting_policy const&) {}
 
         template <typename T>
-        void output(T const& value) {}
+        void output(T const& /*value*/) {}
     };
 
     ///////////////////////////////////////////////////////////////////////////
@@ -281,10 +281,10 @@
     struct no_buffering_policy
     {
         no_buffering_policy() {}
-        no_buffering_policy(no_counting_policy const& rhs) {}
+        no_buffering_policy(no_counting_policy const&) {}
 
         template <typename T>
-        bool output(T const& value) 
+        bool output(T const& /*value*/) 
         {
             return true;
         }
Modified: trunk/boost/spirit/home/karma/detail/pass_container.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/pass_container.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/pass_container.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -170,6 +170,10 @@
         F f;
         Attr const& attr;
         mutable typename traits::container_iterator<Attr>::type iter;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        pass_container& operator= (pass_container const&);
     };
 
     // Utility function to make a pass_container
Modified: trunk/boost/spirit/home/karma/detail/string_generate.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/string_generate.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/string_generate.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -59,7 +59,7 @@
     template <typename OutputIterator, typename Char, typename CharEncoding
       , typename Tag>
     inline bool string_generate(OutputIterator& sink, Char const* str
-      , CharEncoding ce, Tag tag)
+      , CharEncoding, Tag)
     {
         for (Char ch = *str; ch != 0; ch = *++str)
         {
@@ -91,7 +91,7 @@
     template <typename OutputIterator, typename Iterator, typename CharEncoding
       , typename Tag>
     inline bool string_generate(OutputIterator& sink
-      , boost::iterator_range<Iterator> const& r, CharEncoding ce, Tag tag)
+      , boost::iterator_range<Iterator> const& r, CharEncoding, Tag)
     {
         Iterator end = r.end();
         for (Iterator it = r.begin(); it != end; ++it)
Modified: trunk/boost/spirit/home/karma/detail/unused_delimiter.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/detail/unused_delimiter.hpp	(original)
+++ trunk/boost/spirit/home/karma/detail/unused_delimiter.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -20,6 +20,10 @@
         unused_delimiter(Delimiter const& delim)
           : delimiter(delim) {}
         Delimiter const& delimiter;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        unused_delimiter& operator= (unused_delimiter const&);
     };
 
     // If a surrounding verbatim[] directive was specified, the current
Modified: trunk/boost/spirit/home/karma/directive/center_alignment.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/center_alignment.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/center_alignment.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -28,6 +28,7 @@
 #include <boost/integer_traits.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/utility/enable_if.hpp>
+#include <boost/detail/workaround.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit
@@ -87,6 +88,9 @@
             Delimiter const& d, Attribute const& attr, Embedded const& e, 
             unsigned int const width, Padding const& p) 
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            e; // suppresses warning: C4100: 'e' : unreferenced formal parameter
+#endif
             // wrap the given output iterator to allow left padding
             detail::enable_buffering<OutputIterator> buffering(sink, width);
             bool r = false;
Modified: trunk/boost/spirit/home/karma/directive/left_alignment.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/left_alignment.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/left_alignment.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -28,6 +28,7 @@
 #include <boost/integer_traits.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/utility/enable_if.hpp>
+#include <boost/detail/workaround.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit
@@ -87,6 +88,9 @@
             Delimiter const& d, Attribute const& attr, Embedded const& e, 
             unsigned int const width, Padding const& p) 
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            e; // suppresses warning: C4100: 'e' : unreferenced formal parameter
+#endif
             // wrap the given output iterator to allow counting
             detail::enable_counting<OutputIterator> counting(sink);
 
Modified: trunk/boost/spirit/home/karma/directive/maxwidth.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/maxwidth.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/maxwidth.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -25,6 +25,7 @@
 #include <boost/fusion/include/at.hpp>
 #include <boost/fusion/include/vector.hpp>
 #include <boost/lexical_cast.hpp>
+#include <boost/detail/workaround.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit
@@ -83,8 +84,8 @@
         }
 
         template <typename OutputIterator>
-        bool buffer_copy_rest(detail::enable_buffering<OutputIterator>& buff
-          , std::size_t start_at, unused_type)
+        bool buffer_copy_rest(detail::enable_buffering<OutputIterator>&
+          , std::size_t, unused_type)
         {
             return true;
         }
@@ -100,6 +101,9 @@
             Delimiter const& d, Attribute const& attr, Embedded const& e, 
             unsigned int const maxwidth, Rest& restdest) 
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            e; // suppresses warning: C4100: 'e' : unreferenced formal parameter
+#endif
             // wrap the given output iterator to allow buffering, but disable 
             // counting
             detail::enable_buffering<OutputIterator> buffering(sink);
Modified: trunk/boost/spirit/home/karma/directive/omit.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/omit.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/omit.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -53,8 +53,8 @@
 
         template <typename OutputIterator, typename Context, typename Delimiter
           , typename Attribute>
-        bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d
-          , Attribute const& attr) const
+        bool generate(OutputIterator&, Context&, Delimiter const&
+          , Attribute const&) const
         {
             return true;
         }
Modified: trunk/boost/spirit/home/karma/directive/repeat.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/repeat.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/repeat.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -85,6 +85,10 @@
         bool got_min(T i) const { return i >= exact; }
 
         T const exact;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        exact_iterator& operator= (exact_iterator const&);
     };
 
     // handles repeat(min, max)[p]
@@ -102,6 +106,10 @@
 
         T const min;
         T const max;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        finite_iterator& operator= (finite_iterator const&);
     };
 
     // handles repeat(min, inf)[p]
@@ -113,10 +121,14 @@
 
         typedef T type;
         T start() const { return 0; }
-        bool got_max(T i) const { return false; }
+        bool got_max(T /*i*/) const { return false; }
         bool got_min(T i) const { return i >= min; }
 
         T const min;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        infinite_iterator& operator= (infinite_iterator const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/karma/directive/right_alignment.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/directive/right_alignment.hpp	(original)
+++ trunk/boost/spirit/home/karma/directive/right_alignment.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -28,6 +28,7 @@
 #include <boost/integer_traits.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/utility/enable_if.hpp>
+#include <boost/detail/workaround.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost { namespace spirit
@@ -87,6 +88,9 @@
             Delimiter const& d, Attribute const& attr, Embedded const& e, 
             unsigned int const width, Padding const& p) 
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            e; // suppresses warning: C4100: 'e' : unreferenced formal parameter
+#endif
             // wrap the given output iterator to allow left padding
             detail::enable_buffering<OutputIterator> buffering(sink, width);
             bool r = false;
Modified: trunk/boost/spirit/home/karma/nonterminal/rule.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/nonterminal/rule.hpp	(original)
+++ trunk/boost/spirit/home/karma/nonterminal/rule.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -273,7 +273,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info(name_);
         }
Modified: trunk/boost/spirit/home/karma/numeric/bool.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/bool.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/bool.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -163,7 +163,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("bool");
         }
@@ -221,7 +221,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("bool");
         }
Modified: trunk/boost/spirit/home/karma/numeric/bool_policies.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/bool_policies.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/bool_policies.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -88,7 +88,7 @@
         //
         ///////////////////////////////////////////////////////////////////////
         template <typename CharEncoding, typename Tag, typename OutputIterator>
-        static bool generate_true(OutputIterator& sink, T b)
+        static bool generate_true(OutputIterator& sink, T)
         {
             return string_inserter<CharEncoding, Tag>::call(sink, "true");
         }
@@ -106,7 +106,7 @@
         //
         ///////////////////////////////////////////////////////////////////////
         template <typename CharEncoding, typename Tag, typename OutputIterator>
-        static bool generate_false(OutputIterator& sink, T b)
+        static bool generate_false(OutputIterator& sink, T)
         {
             return string_inserter<CharEncoding, Tag>::call(sink, "false");
         }
Modified: trunk/boost/spirit/home/karma/numeric/detail/bool_utils.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/detail/bool_utils.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/detail/bool_utils.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -15,6 +15,7 @@
 #include <boost/spirit/home/karma/detail/generate_to.hpp>
 #include <boost/spirit/home/karma/detail/string_generate.hpp>
 #include <boost/spirit/home/karma/numeric/detail/numeric_utils.hpp>
+#include <boost/detail/workaround.hpp>
 
 namespace boost { namespace spirit { namespace karma 
 { 
@@ -38,6 +39,9 @@
         static bool
         call (OutputIterator& sink, U b, Policies const& p = Policies())
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            p; // suppresses warning: C4100: 'p' : unreferenced formal parameter
+#endif
             return p.template call<bool_inserter>(sink, T(b), p);
         }
 
@@ -48,6 +52,9 @@
         static bool
         call_n (OutputIterator& sink, U b, Policies const& p)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            p; // suppresses warning: C4100: 'p' : unreferenced formal parameter
+#endif
             if (b) 
                 return p.template generate_true<CharEncoding, Tag>(sink, b);
             return p.template generate_false<CharEncoding, Tag>(sink, b);
Modified: trunk/boost/spirit/home/karma/numeric/int.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/int.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/int.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -235,7 +235,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("integer");
         }
@@ -305,7 +305,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("integer");
         }
Modified: trunk/boost/spirit/home/karma/numeric/real.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/real.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/real.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -193,7 +193,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("real");
         }
@@ -254,7 +254,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("real");
         }
Modified: trunk/boost/spirit/home/karma/numeric/uint.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/numeric/uint.hpp	(original)
+++ trunk/boost/spirit/home/karma/numeric/uint.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -269,7 +269,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("unsigned-integer");
         }
@@ -330,7 +330,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("unsigned-integer");
         }
Modified: trunk/boost/spirit/home/karma/operator/alternative.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/operator/alternative.hpp	(original)
+++ trunk/boost/spirit/home/karma/operator/alternative.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -107,7 +107,7 @@
         bool generate(OutputIterator& sink, Context& ctx
           , Delimiter const& d, Attribute const& attr) const
         {
-            typedef detail::alternative_generate_functor<
+            typedef detail::alternative_generate_function<
                 OutputIterator, Context, Delimiter, Attribute
             > functor;
 
Modified: trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp	(original)
+++ trunk/boost/spirit/home/karma/stream/detail/format_manip.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -35,6 +35,10 @@
         Delimiter const& delim;
         BOOST_SCOPED_ENUM(delimit_flag) const pre;
         Attribute const& attr;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        format_manip& operator= (format_manip const&);
     };
 
     template <typename Expr, typename Delimiter, typename Attribute>
@@ -51,6 +55,10 @@
         Delimiter const& delim;
         BOOST_SCOPED_ENUM(delimit_flag) const pre;
         Attribute attr;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        format_manip& operator= (format_manip const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/karma/stream/detail/iterator_sink.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/stream/detail/iterator_sink.hpp	(original)
+++ trunk/boost/spirit/home/karma/stream/detail/iterator_sink.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -44,6 +44,10 @@
         }
 
         OutputIterator& sink;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        iterator_sink& operator= (iterator_sink const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/karma/stream/stream.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/stream/stream.hpp	(original)
+++ trunk/boost/spirit/home/karma/stream/stream.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -194,7 +194,6 @@
         }
     };
 
-    
     template <typename T, typename Char, typename CharEncoding, typename Tag>
     struct lit_stream_generator
       : primitive_generator<lit_stream_generator<T, Char, CharEncoding, Tag> >
@@ -264,6 +263,10 @@
         }
 
         T t_;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        lit_stream_generator& operator= (lit_stream_generator const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/karma/string/lit.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/string/lit.hpp	(original)
+++ trunk/boost/spirit/home/karma/string/lit.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -115,7 +115,7 @@
         }
 
         template <typename Context>
-        static info what(Context const& ctx)
+        static info what(Context const& /*context*/)
         {
             return info("any-string");
         }
@@ -178,7 +178,7 @@
         }
 
         template <typename Context>
-        info what(Context const& ctx) const
+        info what(Context const& /*context*/) const
         {
             return info("literal-string", str_);
         }
Modified: trunk/boost/spirit/home/lex/detail/sequence_function.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/detail/sequence_function.hpp	(original)
+++ trunk/boost/spirit/home/lex/detail/sequence_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -30,6 +30,10 @@
 
         LexerDef& def;
         String const& state;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        sequence_collect_function& operator= (sequence_collect_function const&);
     };
 
     template <typename LexerDef>
@@ -46,6 +50,10 @@
         }
 
         LexerDef& def;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        sequence_add_actions_function& operator= (sequence_add_actions_function const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/lex/lexer/action.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/action.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/action.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -49,6 +49,10 @@
 
         Subject subject;
         Action f;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        action& operator= (action const&);
     };
 
 }}}
Modified: trunk/boost/spirit/home/lex/lexer/char_token_def.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/char_token_def.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/char_token_def.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -78,7 +78,7 @@
         }
 
         template <typename LexerDef>
-        void add_actions(LexerDef& lexdef) const {}
+        void add_actions(LexerDef&) const {}
 
         std::size_t id() const { return static_cast<std::size_t>(ch); }
         std::size_t unique_id() const { return unique_id_; }
Modified: trunk/boost/spirit/home/lex/lexer/lexer.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexer.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexer.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -41,7 +41,6 @@
               , lexer_def_<LexerDef> >
           , qi::parser<lexer_def_<LexerDef> >
           , lex::lexer_type<lexer_def_<LexerDef> >
-//           , noncopyable
         {
         private:
             // avoid warnings about using 'this' in constructor
@@ -168,6 +167,10 @@
                 }
 
                 lexer_def_& def;
+
+            private:
+                // silence MSVC warning C4512: assignment operator could not be generated
+                adder& operator= (adder const&);
             };
             friend struct adder;
 
@@ -186,6 +189,10 @@
                 }
 
                 lexer_def_& def;
+
+            private:
+                // silence MSVC warning C4512: assignment operator could not be generated
+                pattern_adder& operator= (pattern_adder const&);
             };
             friend struct pattern_adder;
 
@@ -243,6 +250,10 @@
         private:
             LexerDef& def;
             string_type state;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            lexer_def_& operator= (lexer_def_ const&);
         };
 
         // allow to assign a token definition expression
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/functor.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/functor.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/functor.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -91,6 +91,10 @@
 
             T& dst_;
             T const& src_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            assign_on_exit& operator= (assign_on_exit const&);
         };
 
     public:
@@ -131,7 +135,8 @@
         static result_type& get_next(MultiPass& mp, result_type& result)
         {
             shared& data = mp.shared()->ftor;
-            do {
+            for(;;) 
+            {
                 if (data.get_first() == data.get_last()) 
 #if defined(BOOST_SPIRIT_STATIC_EOF)
                     return result = eof;
@@ -213,8 +218,7 @@
             // if this token needs to be ignored, just repeat the matching,
             // while starting right after the current match
                 data.get_first() = end;
-
-            } while (true);
+            }
         }
 
         // set_state are propagated up to the iterator interface, allowing to 
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -58,9 +58,9 @@
 
             // The following functions are used by the implementation of the 
             // placeholder '_state'.
-            void set_state_name (char_type const* state) {}
+            void set_state_name (char_type const*) {}
             char_type const* get_state_name() const { return rules_.initial(); }
-            std::size_t get_state_id (char_type const* state) const
+            std::size_t get_state_id (char_type const*) const
             {
                 return 0;
             }
@@ -142,7 +142,7 @@
             }
 
             std::size_t get_state() const { return 0; }
-            void set_state(std::size_t state) {}
+            void set_state(std::size_t) {}
 
             Iterator& get_first() { return first_; }
             Iterator const& get_first() const { return first_; }
@@ -161,6 +161,10 @@
 
             boost::lexer::basic_state_machine<char_type> const& state_machine_;
             boost::lexer::basic_rules<char_type> const& rules_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            data& operator= (data const&);
         };
 
         ///////////////////////////////////////////////////////////////////////
@@ -227,6 +231,10 @@
 
         protected:
             std::size_t state_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            data& operator= (data const&);
         };
 
         ///////////////////////////////////////////////////////////////////////
@@ -342,6 +350,10 @@
             mutable TokenValue value_;  // token value to use
             bool has_hold_;     // 'true' if hold_ is valid
             bool has_value_;    // 'true' if value_ is valid
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            data& operator= (data const&);
         };
     }
 
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -173,15 +173,23 @@
         os_ << "std::size_t next_token" << (name_suffix[0] ? "_" : "") 
             << name_suffix  << " (";
 
-        if (dfas_ > 1 || !optimize_parameters)
+        if (dfas_ > 1)
+        {
+            os_ << "std::size_t& start_state_, ";
+        }
+        else if (!optimize_parameters)
         {
-            os_ << "std::size_t &start_state_, ";
+            os_ << "std::size_t& /*start_state_*/, ";
         }
 
-        if (sm_.data()._seen_BOL_assertion || !optimize_parameters)
+        if (sm_.data()._seen_BOL_assertion)
         {
             os_ << "Iterator const& start_, ";
         }
+        else if (!optimize_parameters)
+        {
+            os_ << "Iterator const& /*start_*/, ";
+        }
 
         if (dfas_ > 1 || sm_.data()._seen_BOL_assertion || !optimize_parameters)
         {
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -34,7 +34,11 @@
           , Iterator &start_token_, Iterator const& end_
           , std::size_t& unique_id_)
         {
-            if (start_token_ == end_) return 0;
+            if (start_token_ == end_) 
+            {
+                unique_id_ = boost::lexer::npos;
+                return 0;
+            }
 
         again:
             std::size_t const* lookup_ = &state_machine_.data()._lookup[dfa_state_]->
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/lexer.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/lexer.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/lexer.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -166,9 +166,22 @@
         // this type is purely used for the iterator_type construction below
         struct iterator_data_type 
         {
+            typedef typename Functor::semantic_actions_type semantic_actions_type;
+
+            iterator_data_type(
+                boost::lexer::basic_state_machine<char_type> const& state_machine
+              , boost::lexer::basic_rules<char_type> const& rules
+              , semantic_actions_type const& actions)
+              : state_machine_(state_machine), rules_(rules), actions_(actions)
+            {}
+
             boost::lexer::basic_state_machine<char_type> const& state_machine_;
             boost::lexer::basic_rules<char_type> const& rules_;
-            typename Functor::semantic_actions_type const& actions_;
+            semantic_actions_type const& actions_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            iterator_data_type& operator= (iterator_data_type const&);
         };
 
     public:
@@ -180,7 +193,7 @@
             if (!init_dfa())
                 return iterator_type();
 
-            iterator_data_type iterator_data = { state_machine_, rules_, actions_ };
+            iterator_data_type iterator_data(state_machine_, rules_, actions_);
             return iterator_type(iterator_data, first, last, initial_state);
         }
 
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -45,7 +45,7 @@
             }
 
             // try to invoke a semantic action for the given token (unique_id)
-            BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state
+            BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t /*state*/
               , std::size_t& id, std::size_t unique_id, Iterator& end
               , Data& data) const
             {
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -74,12 +74,12 @@
 
             // The following functions are used by the implementation of the 
             // placeholder '_state'.
-            void set_state_name (char_type const* state) {}
+            void set_state_name (char_type const*) {}
             char_type const* get_state_name() const 
             { 
                 return get_state_name_(0); 
             }
-            std::size_t get_state_id(char_type const* state) const 
+            std::size_t get_state_id(char_type const*) const 
             { 
                 return 0; 
             }
@@ -160,7 +160,7 @@
             }
 
             std::size_t get_state() const { return 0; }
-            void set_state(std::size_t state) {}
+            void set_state(std::size_t) {}
 
             Iterator& get_first() { return first_; }
             Iterator const& get_first() const { return first_; }
@@ -179,6 +179,10 @@
 
             next_token_functor next_token_;
             get_state_name_type get_state_name_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            static_data& operator= (static_data const&);
         };
 
         ///////////////////////////////////////////////////////////////////////
@@ -248,6 +252,10 @@
         protected:
             std::size_t state_;
             std::size_t num_states_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            static_data& operator= (static_data const&);
         };
 
         ///////////////////////////////////////////////////////////////////////
@@ -364,6 +372,10 @@
             mutable TokenValue value_;  // token value to use
             bool has_hold_;     // 'true' if hold_ is valid
             bool has_value_;    // 'true' if value_ is valid
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            static_data& operator= (static_data const&);
         };
     }
 
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -133,10 +133,25 @@
         // this type is purely used for the iterator_type construction below
         struct iterator_data_type 
         {
-            typename Functor::next_token_functor next_;
-            typename Functor::semantic_actions_type const& actions_;
-            typename Functor::get_state_name_type get_state_name_;
+            typedef typename Functor::next_token_functor next_token_functor;
+            typedef typename Functor::semantic_actions_type semantic_actions_type;
+            typedef typename Functor::get_state_name_type get_state_name_type;
+
+            iterator_data_type(next_token_functor next
+              , semantic_actions_type const& actions
+              , get_state_name_type get_state_name, std::size_t num_states)
+              : next_(next), actions_(actions), get_state_name_(get_state_name)
+              , num_states_(num_states)
+            {}
+
+            next_token_functor next_;
+            semantic_actions_type const& actions_;
+            get_state_name_type get_state_name_;
             std::size_t num_states_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            iterator_data_type& operator= (iterator_data_type const&);
         };
 
         typedef LexerTables tables_type;
@@ -157,10 +172,10 @@
         iterator_type begin(Iterator_& first, Iterator_ const& last
           , char_type const* initial_state = 0) const
         { 
-            iterator_data_type iterator_data = { 
+            iterator_data_type iterator_data( 
                     &tables_type::template next<Iterator_>, actions_, 
                     &tables_type::state_name, tables_type::state_count()
-                };
+                );
             return iterator_type(iterator_data, first, last, initial_state);
         }
 
@@ -173,26 +188,25 @@
 
     protected:
         //  Lexer instances can be created by means of a derived class only.
-        static_lexer(unsigned int flags) : unique_id_(0) {}
+        static_lexer(unsigned int) : unique_id_(0) {}
 
     public:
         // interface for token definition management
-        std::size_t add_token (char_type const* state, char_type tokendef
-          , std::size_t token_id) 
+        std::size_t add_token (char_type const*, char_type, std::size_t) 
         {
             return unique_id_++;
         }
-        std::size_t add_token (char_type const* state, string_type const& tokendef
-          , std::size_t token_id) 
+        std::size_t add_token (char_type const*, string_type const&
+          , std::size_t) 
         {
             return unique_id_++;
         }
 
         // interface for pattern definition management
-        void add_pattern (char_type const* state, string_type const& name
-          , string_type const& patterndef) {}
+        void add_pattern (char_type const*, string_type const&
+          , string_type const&) {}
 
-        void clear(char_type const* state) {}
+        void clear(char_type const*) {}
 
         std::size_t add_state(char_type const* state)
         {
Modified: trunk/boost/spirit/home/lex/lexer/lexertl/token.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/lexertl/token.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/lexertl/token.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -132,13 +132,17 @@
         token(id_type id, std::size_t, token_value_type)
           : id_(id) {}
 
+#if defined(BOOST_SPIRIT_DEBUG)
         token(id_type id, std::size_t, Iterator const& first
               , Iterator const& last)
           : id_(id) 
-#if defined(BOOST_SPIRIT_DEBUG)
           , matched_(first, last)
-#endif
         {}
+#else
+        token(id_type id, std::size_t, Iterator const&, Iterator const&)
+          : id_(id) 
+        {}
+#endif
 
         //  this default conversion operator is needed to allow the direct 
         //  usage of tokens in conjunction with the primitive parsers defined 
Modified: trunk/boost/spirit/home/lex/lexer/string_token_def.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/string_token_def.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/string_token_def.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -74,7 +74,7 @@
         }
 
         template <typename LexerDef>
-        void add_actions(LexerDef& lexdef) const {}
+        void add_actions(LexerDef&) const {}
 
         std::size_t id() const { return id_; }
         std::size_t unique_id() const { return unique_id_; }
Modified: trunk/boost/spirit/home/lex/lexer/token_def.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/lexer/token_def.hpp	(original)
+++ trunk/boost/spirit/home/lex/lexer/token_def.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -142,7 +142,7 @@
         }
 
         template <typename LexerDef>
-        void add_actions(LexerDef& lexdef) const {}
+        void add_actions(LexerDef&) const {}
 
     public:
         typedef Char char_type;
@@ -153,12 +153,13 @@
         token_def() 
           : proto_base_type(terminal_type::make(alias()))
           , def_('\0'), token_id_()
-          , unique_id_(std::size_t(~0)), token_state_(~0)  {}
+          , unique_id_(std::size_t(~0)), token_state_(std::size_t(~0))  {}
 
         explicit token_def(char_type def_, Idtype id_ = Idtype())
           : proto_base_type(terminal_type::make(alias()))
-          , def_(def_), token_id_(Idtype() == id_ ? def_ : id_)
-          , unique_id_(~0), token_state_(std::size_t(~0)) {}
+          , def_(def_)
+          , token_id_(std::size_t(Idtype() == id_ ? def_ : id_))
+          , unique_id_(std::size_t(~0)), token_state_(std::size_t(~0)) {}
 
         explicit token_def(string_type const& def_, Idtype id_ = Idtype())
           : proto_base_type(terminal_type::make(alias()))
Modified: trunk/boost/spirit/home/lex/qi/state_switcher.hpp
==============================================================================
--- trunk/boost/spirit/home/lex/qi/state_switcher.hpp	(original)
+++ trunk/boost/spirit/home/lex/qi/state_switcher.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -108,7 +108,7 @@
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
           , Context& /*context*/, Skipper const& skipper
-          , Attribute& attr) const
+          , Attribute& /*attr*/) const
         {
             qi::skip_over(first, last, skipper);   // always do a pre-skip
 
@@ -146,6 +146,10 @@
 
             Iterator& it;
             std::size_t state;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            reset_state_on_exit& operator= (reset_state_on_exit const&);
         };
     }
 
@@ -202,6 +206,10 @@
 
         Subject subject;
         State state;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        state_switcher_context& operator= (state_switcher_context const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/action/action.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/action/action.hpp	(original)
+++ trunk/boost/spirit/home/qi/action/action.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -73,6 +73,10 @@
 
         Subject subject;
         Action f;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        action& operator= (action const&);
     };
 }}}
 
Modified: trunk/boost/spirit/home/qi/auxiliary/attr.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/attr.hpp	(original)
+++ trunk/boost/spirit/home/qi/auxiliary/attr.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -55,8 +55,8 @@
 
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
-        bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
+        bool parse(Iterator& /*first*/, Iterator const& /*last*/
+          , Context& /*context*/, Skipper const& /*skipper*/
           , Attribute& attr) const
         {
             spirit::traits::assign_to(value_, attr);
@@ -64,12 +64,16 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("attr");
         }
 
         Value value_;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        attr_parser& operator= (attr_parser const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/auxiliary/attr_cast.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/attr_cast.hpp	(original)
+++ trunk/boost/spirit/home/qi/auxiliary/attr_cast.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -111,6 +111,10 @@
         }
 
         Subject subject;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        attr_cast_parser& operator= (attr_cast_parser const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/auxiliary/eoi.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eoi.hpp	(original)
+++ trunk/boost/spirit/home/qi/auxiliary/eoi.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -44,15 +44,15 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
-          , Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper
+          , Attribute& /*attr*/) const
         {
             qi::skip_over(first, last, skipper);
             return first == last;
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("eoi");
         }
Modified: trunk/boost/spirit/home/qi/auxiliary/eol.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eol.hpp	(original)
+++ trunk/boost/spirit/home/qi/auxiliary/eol.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -44,8 +44,8 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
-          , Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper
+          , Attribute& /*attr*/) const
         {
             qi::skip_over(first, last, skipper);
 
@@ -70,7 +70,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("eol");
         }
Modified: trunk/boost/spirit/home/qi/auxiliary/eps.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/auxiliary/eps.hpp	(original)
+++ trunk/boost/spirit/home/qi/auxiliary/eps.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -56,15 +56,15 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
-          , Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper
+          , Attribute& /*attr*/) const
         {
             qi::skip_over(first, last, skipper);
             return true;
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("eps");
         }
@@ -84,15 +84,15 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
-          , Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper
+          , Attribute& /*attr*/) const
         {
             qi::skip_over(first, last, skipper);
             return predicate;
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("semantic-predicate");
         }
Modified: trunk/boost/spirit/home/qi/binary/binary.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/binary/binary.hpp	(original)
+++ trunk/boost/spirit/home/qi/binary/binary.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -25,6 +25,7 @@
 #include <boost/mpl/or.hpp>
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_enum.hpp>
+#include <boost/config.hpp>
 
 #define BOOST_SPIRIT_ENABLE_BINARY(name)                                        \
     template <>                                                                 \
@@ -176,7 +177,7 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
+          , Context& /*context*/, Skipper const& skipper
           , Attribute& attr) const
         {
             qi::skip_over(first, last, skipper);
@@ -198,7 +199,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info(qi::detail::what<endian>::is());
         }
@@ -222,7 +223,7 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper
+          , Context& /*context*/, Skipper const& skipper
           , Attribute& attr) const
         {
             qi::skip_over(first, last, skipper);
@@ -233,7 +234,17 @@
             // This allows us to treat them as a sequence of consecutive bytes.
             boost::integer::endian<
                 endian, typename qi::detail::integer<bits>::type, bits> attr_;
+
+#if defined(BOOST_MSVC)
+// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data
+#pragma warning(push)
+#pragma warning(disable: 4244)
+#endif
             attr_ = n;
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
+
             unsigned char* bytes = reinterpret_cast<unsigned char*>(&attr_);
 
             Iterator it = first;
@@ -249,7 +260,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info(qi::detail::what<endian>::is());
         }
Modified: trunk/boost/spirit/home/qi/char/char.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/char/char.hpp	(original)
+++ trunk/boost/spirit/home/qi/char/char.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -107,8 +107,9 @@
         typedef typename CharEncoding::char_type char_type;
         typedef CharEncoding char_encoding;
 
-        literal_char(char_type ch)
-          : ch(ch) {}
+        template <typename Char>
+        literal_char(Char ch)
+          : ch(static_cast<char_type>(ch)) {}
 
         template <typename Context, typename Iterator>
         struct attribute
@@ -145,8 +146,8 @@
         typedef CharEncoding char_encoding;
 
         literal_char(char_type ch)
-          : lo(char_encoding::tolower(ch))
-          , hi(char_encoding::toupper(ch)) {}
+          : lo(static_cast<char_type>(char_encoding::tolower(ch)))
+          , hi(static_cast<char_type>(char_encoding::toupper(ch))) {}
 
         template <typename Context, typename Iterator>
         struct attribute
@@ -218,10 +219,10 @@
         typedef CharEncoding char_encoding;
 
         char_range(char_type from, char_type to)
-          : from_lo(char_encoding::tolower(from))
-          , to_lo(char_encoding::tolower(to))
-          , from_hi(char_encoding::toupper(from))
-          , to_hi(char_encoding::toupper(to))
+          : from_lo(static_cast<char_type>(char_encoding::tolower(from)))
+          , to_lo(static_cast<char_type>(char_encoding::tolower(to)))
+          , from_hi(static_cast<char_type>(char_encoding::toupper(from)))
+          , to_hi(static_cast<char_type>(char_encoding::toupper(to)))
         {}
 
         template <typename CharParam, typename Context>
@@ -335,18 +336,20 @@
                     next = *definition++;
                     if (next == 0)
                     {
-                        chset.set(CharEncoding::tolower(ch));
-                        chset.set(CharEncoding::toupper(ch));
+                        chset.set(static_cast<char_type>(CharEncoding::tolower(ch)));
+                        chset.set(static_cast<char_type>(CharEncoding::toupper(ch)));
                         chset.set('-');
                         break;
                     }
-                    chset.set(CharEncoding::tolower(ch), CharEncoding::tolower(next));
-                    chset.set(CharEncoding::toupper(ch), CharEncoding::toupper(next));
+                    chset.set(static_cast<char_type>(CharEncoding::tolower(ch))
+                      , static_cast<char_type>(CharEncoding::tolower(next)));
+                    chset.set(static_cast<char_type>(CharEncoding::toupper(ch))
+                      , static_cast<char_type>(CharEncoding::toupper(next)));
                 }
                 else
                 {
-                    chset.set(CharEncoding::tolower(ch));
-                    chset.set(CharEncoding::toupper(ch));
+                    chset.set(static_cast<char_type>(CharEncoding::tolower(ch)));
+                    chset.set(static_cast<char_type>(CharEncoding::toupper(ch)));
                 }
                 ch = next;
             }
Modified: trunk/boost/spirit/home/qi/detail/alternative_function.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/alternative_function.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/alternative_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -69,6 +69,10 @@
         Context& context;
         Skipper const& skipper;
         Attribute& attr;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        alternative_function& operator= (alternative_function const&);
     };
 
     template <typename Iterator, typename Context, typename Skipper>
@@ -93,6 +97,10 @@
         Iterator const& last;
         Context& context;
         Skipper const& skipper;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        alternative_function& operator= (alternative_function const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/qi/detail/assign_to.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/assign_to.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/assign_to.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -87,7 +87,7 @@
     struct assign_to_attribute_from_value<optional<Attribute>, unused_type>
     {
         static void 
-        call(unused_type, optional<Attribute> const& attr)
+        call(unused_type, optional<Attribute> const&)
         {
         }
     };
Modified: trunk/boost/spirit/home/qi/detail/expect_function.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/expect_function.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/expect_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -13,6 +13,7 @@
 
 #include <boost/spirit/home/support/unused.hpp>
 #include <boost/spirit/home/support/multi_pass_wrapper.hpp>
+#include <boost/throw_exception.hpp>
 
 namespace boost { namespace spirit { namespace qi { namespace detail
 {
@@ -53,8 +54,10 @@
                     is_first = false;
                     return true;
                 }
-                Exception x = { first, last, component.what(context) };
-                throw x;
+                boost::throw_exception(Exception(first, last, component.what(context)));
+#if defined(BOOST_NO_EXCEPTIONS)
+                return false;   // for systems not supporting exceptions
+#endif
             }
             is_first = false;
             return false;
@@ -78,8 +81,10 @@
                     is_first = false;
                     return true;
                 }
-                Exception x = { first, last, component.what(context) };
-                throw x;
+                boost::throw_exception(Exception(first, last, component.what(context)));
+#if defined(BOOST_NO_EXCEPTIONS)
+                return false;   // for systems not supporting exceptions
+#endif
             }
             is_first = false;
             return false;
@@ -90,6 +95,10 @@
         Context& context;
         Skipper const& skipper;
         mutable bool is_first;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        expect_function& operator= (expect_function const&);
     };
 }}}}
 
Modified: trunk/boost/spirit/home/qi/detail/fail_function.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/fail_function.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/fail_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -49,6 +49,10 @@
         Iterator const& last;
         Context& context;
         Skipper const& skipper;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        fail_function& operator= (fail_function const&);
     };
 }}}}
 
Modified: trunk/boost/spirit/home/qi/detail/pass_container.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/pass_container.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/pass_container.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -139,7 +139,7 @@
             return f(component, attr);
         }
 
-        // Dispaches to dispatch_main depending on the attribute type
+        // Dispatches to dispatch_main depending on the attribute type
         // of the Component
         template <typename Component>
         bool operator()(Component const& component) const
@@ -155,6 +155,10 @@
 
         F f;
         Attr& attr;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        pass_container& operator= (pass_container const&);
     };
 
     // Utility function to make a pass_container
Modified: trunk/boost/spirit/home/qi/detail/pass_function.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/pass_function.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/pass_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -60,6 +60,10 @@
         Iterator const& last;
         Context& context;
         Skipper const& skipper;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        pass_function& operator= (pass_function const&);
     };
 }}}}
 
Modified: trunk/boost/spirit/home/qi/detail/permute_function.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/permute_function.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/permute_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -78,6 +78,10 @@
         Context& context;
         Skipper const& skipper;
         bool* taken;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        permute_function& operator= (permute_function const&);
     };
 }}}}
 
Modified: trunk/boost/spirit/home/qi/detail/unused_skipper.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/detail/unused_skipper.hpp	(original)
+++ trunk/boost/spirit/home/qi/detail/unused_skipper.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -20,6 +20,10 @@
         unused_skipper(Skipper const& skipper)
           : skipper(skipper) {}
         Skipper const& skipper;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        unused_skipper& operator= (unused_skipper const&);
     };
 
     // If a surrounding lexeme[] directive was specified, the current
Modified: trunk/boost/spirit/home/qi/directive/omit.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/omit.hpp	(original)
+++ trunk/boost/spirit/home/qi/directive/omit.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -67,6 +67,10 @@
         }
 
         Subject subject;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        omit_directive& operator= (omit_directive const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/directive/repeat.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/directive/repeat.hpp	(original)
+++ trunk/boost/spirit/home/qi/directive/repeat.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -82,6 +82,10 @@
         bool got_min(T i) const { return i >= exact; }
 
         T const exact;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        exact_iterator& operator= (exact_iterator const&);
     };
 
     template <typename T>
@@ -98,6 +102,10 @@
 
         T const min;
         T const max;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        finite_iterator& operator= (finite_iterator const&);
     };
 
     template <typename T>
@@ -108,10 +116,14 @@
 
         typedef T type;
         T start() const { return 0; }
-        bool got_max(T i) const { return false; }
+        bool got_max(T /*i*/) const { return false; }
         bool got_min(T i) const { return i >= min; }
 
         T const min;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        infinite_iterator& operator= (infinite_iterator const&);
     };
 
     template <typename Subject, typename LoopIter>
@@ -187,6 +199,10 @@
 
         Subject subject;
         LoopIter iter;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        repeat_parser& operator= (repeat_parser const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/nonterminal/debug_handler.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/nonterminal/debug_handler.hpp	(original)
+++ trunk/boost/spirit/home/qi/nonterminal/debug_handler.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -68,7 +68,7 @@
             catch (expectation_failure<Iterator> const& e)
             {
                 f(first, last, context, failed_parse, rule_name);
-                throw e;
+                boost::throw_exception(e);
             }
             return false;
         }
Modified: trunk/boost/spirit/home/qi/nonterminal/error_handler.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/nonterminal/error_handler.hpp	(original)
+++ trunk/boost/spirit/home/qi/nonterminal/error_handler.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -35,7 +35,7 @@
         template <typename Iterator, bool active>
         struct reset_on_exit
         {
-            reset_on_exit(Iterator& it) {}
+            reset_on_exit(Iterator&) {}
         };
 
         // For 'retry' or 'fail' error handlers we need to inhibit the flushing 
@@ -91,7 +91,7 @@
                   (action == retry || action == fail)> on_exit_type;
 
             on_exit_type on_exit(first);
-            while (true)
+            for(;;)
             {
                 try
                 {
@@ -111,7 +111,7 @@
                           , info const&>
                     params;
                     error_handler_result r = action;
-                    params args(first, last, x.first, x.what);
+                    params args(first, last, x.first, x.what_);
                     f(args, context, r);
 
                     // The assertions below will fire if you are using a
@@ -133,7 +133,7 @@
                                 (action != retry && action != fail));
                             continue;
                         case accept: return true;
-                        case rethrow: throw x;
+                        case rethrow: boost::throw_exception(x);
                     }
                 }
             }
Modified: trunk/boost/spirit/home/qi/nonterminal/rule.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/nonterminal/rule.hpp	(original)
+++ trunk/boost/spirit/home/qi/nonterminal/rule.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -285,7 +285,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info(name_);
         }
Modified: trunk/boost/spirit/home/qi/numeric/bool.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/bool.hpp	(original)
+++ trunk/boost/spirit/home/qi/numeric/bool.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -18,6 +18,7 @@
 #include <boost/spirit/home/support/common_terminals.hpp>
 #include <boost/spirit/home/support/info.hpp>
 #include <boost/mpl/assert.hpp>
+#include <boost/detail/workaround.hpp>
 
 namespace boost { namespace spirit
 {
@@ -59,6 +60,9 @@
                 if (first == last)
                     return false;
 
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+                p; // suppresses warning: C4100: 'p' : unreferenced formal parameter
+#endif
                 return (allow_true && p.parse_true(first, last, attr)) ||
                        (!disallow_false && p.parse_false(first, last, attr));
             }
Modified: trunk/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp	(original)
+++ trunk/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -183,7 +183,7 @@
             if (n > max - digit)
                 return false;
 
-            n += digit;
+            n += static_cast<T>(digit);
             return true;
         }
     };
@@ -214,7 +214,7 @@
             if (n < min + digit)
                 return false;
 
-            n -= digit;
+            n -= static_cast<T>(digit);
             return true;
         }
     };
Modified: trunk/boost/spirit/home/qi/operator/expect.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/operator/expect.hpp	(original)
+++ trunk/boost/spirit/home/qi/operator/expect.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -15,6 +15,7 @@
 #include <boost/spirit/home/qi/detail/expect_function.hpp>
 #include <boost/spirit/home/qi/meta_compiler.hpp>
 #include <boost/spirit/home/support/info.hpp>
+#include <stdexcept>
 
 namespace boost { namespace spirit
 {
@@ -33,11 +34,17 @@
 namespace boost { namespace spirit { namespace qi
 {
     template <typename Iterator>
-    struct expectation_failure
+    struct expectation_failure : std::runtime_error
     {
+        expectation_failure(Iterator first, Iterator last, info const& what)
+          : std::runtime_error("boost::spirit::qi::expectation_failure")
+          , first(first), last(last), what_(what)
+        {}
+        ~expectation_failure() throw() {}
+
         Iterator first;
         Iterator last;
-        info what;
+        info what_;
     };
 
     template <typename Elements>
Modified: trunk/boost/spirit/home/qi/stream/detail/iterator_source.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/stream/detail/iterator_source.hpp	(original)
+++ trunk/boost/spirit/home/qi/stream/detail/iterator_source.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -50,6 +50,10 @@
 
         Iterator& first;
         Iterator const& last;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        iterator_source& operator= (iterator_source const&);
     };
 
 }}}}
Modified: trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp	(original)
+++ trunk/boost/spirit/home/qi/stream/detail/match_manip.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -37,6 +37,10 @@
         Skipper const& skipper;
         Attribute& attr;
         BOOST_SCOPED_ENUM(skip_flag) const post_skip;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        match_manip& operator= (match_manip const&);
     };
 
     template <typename Expr, typename Skipper, typename Attribute>
@@ -53,6 +57,10 @@
         Skipper const& skipper;
         Attribute attr;
         BOOST_SCOPED_ENUM(skip_flag) const post_skip;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        match_manip& operator= (match_manip const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/spirit/home/qi/string/detail/tst.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/string/detail/tst.hpp	(original)
+++ trunk/boost/spirit/home/qi/string/detail/tst.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -117,7 +117,7 @@
                 return 0;
 
             tst_node** pp = &start;
-            while (true)
+            for(;;)
             {
                 typename
                     boost::detail::iterator_traits<Iterator>::value_type
Modified: trunk/boost/spirit/home/qi/string/lit.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/string/lit.hpp	(original)
+++ trunk/boost/spirit/home/qi/string/lit.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -29,6 +29,7 @@
 #include <boost/type_traits/add_const.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/if.hpp>
+#include <boost/detail/workaround.hpp>
 #include <string>
 
 namespace boost { namespace spirit
@@ -88,19 +89,23 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper, Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper, Attribute& attr) const
         {
             qi::skip_over(first, last, skipper);
             return detail::string_parse(str, first, last, attr);
         }
 
         template <typename Context>
-        info what(Context& /*ctx*/) const
+        info what(Context& /*context*/) const
         {
             return info("literal-string", str);
         }
 
         String str;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        literal_string& operator= (literal_string const&);
     };
 
     template <typename String, bool no_attribute>
@@ -117,6 +122,9 @@
           : str_lo(in)
           , str_hi(in)
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            encoding; // suppresses warning: C4100: 'encoding' : unreferenced formal parameter
+#endif
             typename string_type::iterator loi = str_lo.begin();
             typename string_type::iterator hii = str_hi.begin();
 
@@ -124,8 +132,8 @@
             {
                 typedef typename CharEncoding::char_type encoded_char_type;
 
-                *loi = encoding.tolower(encoded_char_type(*loi));
-                *hii = encoding.toupper(encoded_char_type(*hii));
+                *loi = static_cast<char_type>(encoding.tolower(encoded_char_type(*loi)));
+                *hii = static_cast<char_type>(encoding.toupper(encoded_char_type(*hii)));
             }
         }
 
@@ -140,7 +148,7 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper, Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper, Attribute& attr) const
         {
             qi::skip_over(first, last, skipper);
             return detail::string_parse(str_lo, str_hi, first, last, attr);
Modified: trunk/boost/spirit/home/qi/string/symbols.hpp
==============================================================================
--- trunk/boost/spirit/home/qi/string/symbols.hpp	(original)
+++ trunk/boost/spirit/home/qi/string/symbols.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -218,7 +218,7 @@
         template <typename Iterator, typename Context
           , typename Skipper, typename Attribute>
         bool parse(Iterator& first, Iterator const& last
-          , Context& context, Skipper const& skipper, Attribute& attr) const
+          , Context& /*context*/, Skipper const& skipper, Attribute& attr) const
         {
             qi::skip_over(first, last, skipper);
 
@@ -232,7 +232,7 @@
         }
 
         template <typename Context>
-        info what(Context& context) const
+        info what(Context& /*context*/) const
         {
             return info("symbols"); // $$$ for now! give symbols a name $$$
         }
@@ -274,6 +274,10 @@
             }
 
             symbols& sym;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            adder& operator= (adder const&);
         };
 
         struct remover
@@ -313,6 +317,10 @@
             }
 
             symbols& sym;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            remover& operator= (remover const&);
         };
 
         adder add;
@@ -332,7 +340,7 @@
         {
             Char operator()(Char ch) const
             {
-                return CharEncoding::tolower(ch);
+                return static_cast<Char>(CharEncoding::tolower(ch));
             }
         };
 
Modified: trunk/boost/spirit/home/support/attributes.hpp
==============================================================================
--- trunk/boost/spirit/home/support/attributes.hpp	(original)
+++ trunk/boost/spirit/home/support/attributes.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -439,7 +439,7 @@
     {
         typedef Attribute& type;
         static Attribute& pre(Attribute& val) { return val; }
-        static void post(Attribute& val, Attribute const& attr) {}
+        static void post(Attribute&, Attribute const&) {}
     };
 
     template <typename Attribute>
Modified: trunk/boost/spirit/home/support/char_class.hpp
==============================================================================
--- trunk/boost/spirit/home/support/char_class.hpp	(original)
+++ trunk/boost/spirit/home/support/char_class.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -197,21 +197,21 @@
         static Char
         to(tag::lower, Char ch)
         {
-            return CharEncoding::tolower(char_type(ch));
+            return static_cast<Char>(CharEncoding::tolower(char_type(ch)));
         }
 
         template <typename Char>
         static Char
         to(tag::upper, Char ch)
         {
-            return CharEncoding::toupper(char_type(ch));
+            return static_cast<Char>(CharEncoding::toupper(char_type(ch)));
         }
 
         template <typename Char>
         static Char
         to(tag::ucs4, Char ch)
         {
-            return CharEncoding::toucs4(char_type(ch));
+            return static_cast<Char>(CharEncoding::toucs4(char_type(ch)));
         }
 
         template <typename Char>
Modified: trunk/boost/spirit/home/support/detail/what_function.hpp
==============================================================================
--- trunk/boost/spirit/home/support/detail/what_function.hpp	(original)
+++ trunk/boost/spirit/home/support/detail/what_function.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -13,6 +13,7 @@
 
 #include <string>
 #include <boost/spirit/home/support/info.hpp>
+#include <boost/detail/workaround.hpp>
 
 namespace boost { namespace spirit { namespace detail
 {
@@ -28,11 +29,18 @@
         template <typename Component>
         void operator()(Component const& component) const
         {
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
+            component; // suppresses warning: C4100: 'component' : unreferenced formal parameter
+#endif
             get<std::list<info> >(what.value).push_back(component.what(context));
         }
 
         info& what;
         Context& context;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        what_function& operator= (what_function const&);
     };
 }}}
 
Modified: trunk/boost/spirit/home/support/info.hpp
==============================================================================
--- trunk/boost/spirit/home/support/info.hpp	(original)
+++ trunk/boost/spirit/home/support/info.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -116,6 +116,10 @@
         Callback& callback;
         utf8_string const& tag;
         int depth;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        basic_info_walker& operator= (basic_info_walker const&);
     };
 
     // bare-bones print support
@@ -127,7 +131,7 @@
         simple_printer(Out& out)
           : out(out) {}
 
-        void element(string const& tag, string const& value, int depth) const
+        void element(string const& tag, string const& value, int /*depth*/) const
         {
             if (value == "")
                 out << '<' << tag << '>';
@@ -136,6 +140,10 @@
         }
 
         Out& out;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        simple_printer& operator= (simple_printer const&);
     };
 
     template <typename Out>
Modified: trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp
==============================================================================
--- trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp	(original)
+++ trunk/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -162,6 +162,10 @@
             explicit shared(Functor const& x) : ftor(x.second) {}
 
             mutable typename Functor::second_type ftor;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            shared& operator= (shared const&);
         };
     };
 
Modified: trunk/boost/spirit/home/support/make_component.hpp
==============================================================================
--- trunk/boost/spirit/home/support/make_component.hpp	(original)
+++ trunk/boost/spirit/home/support/make_component.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -76,7 +76,7 @@
 
             result_type operator()(
                 typename impl::expr_param expr
-              , typename impl::state_param state
+              , typename impl::state_param /*state*/
               , typename impl::data_param data
             ) const
             {
Modified: trunk/boost/spirit/home/support/modify.hpp
==============================================================================
--- trunk/boost/spirit/home/support/modify.hpp	(original)
+++ trunk/boost/spirit/home/support/modify.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -99,7 +99,7 @@
 
         template <typename Tag, typename Modifiers>
         Modifiers
-        op(Tag tag, Modifiers modifiers, mpl::false_) const
+        op(Tag /*tag*/, Modifiers modifiers, mpl::false_) const
         {
             return modifiers;
         }
Modified: trunk/boost/spirit/home/support/multi_pass_wrapper.hpp
==============================================================================
--- trunk/boost/spirit/home/support/multi_pass_wrapper.hpp	(original)
+++ trunk/boost/spirit/home/support/multi_pass_wrapper.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -28,7 +28,7 @@
 
     template <typename Iterator>
     void clear_queue(Iterator&
-      , BOOST_SCOPED_ENUM(clear_mode) mode = clear_mode::clear_if_enabled) 
+      , BOOST_SCOPED_ENUM(clear_mode) /*mode*/ = clear_mode::clear_if_enabled) 
     {}
 
     template <typename Iterator>
Modified: trunk/boost/spirit/home/support/nonterminal/expand_arg.hpp
==============================================================================
--- trunk/boost/spirit/home/support/nonterminal/expand_arg.hpp	(original)
+++ trunk/boost/spirit/home/support/nonterminal/expand_arg.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -73,6 +73,10 @@
         }
 
         Context& context;
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        expand_arg& operator= (expand_arg const&);
     };
 
 }}}
Modified: trunk/boost/spirit/home/support/terminal.hpp
==============================================================================
--- trunk/boost/spirit/home/support/terminal.hpp	(original)
+++ trunk/boost/spirit/home/support/terminal.hpp	2009-11-08 23:01:15 EST (Sun, 08 Nov 2009)
@@ -395,6 +395,10 @@
               , phoenix::as_actor<A1>::convert(_1)
               , phoenix::as_actor<A2>::convert(_2));
         }
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        terminal& operator= (terminal const&);
     };
 
     ///////////////////////////////////////////////////////////////////////////
@@ -446,6 +450,10 @@
             stateful_tag(data_type const& data) : data_(data) {}
 
             data_type data_;
+
+        private:
+            // silence MSVC warning C4512: assignment operator could not be generated
+            stateful_tag& operator= (stateful_tag const&);
         };
     }
 
@@ -459,6 +467,10 @@
         stateful_tag_type() {}
         stateful_tag_type(Data const& data)
           : spirit::terminal<tag_type>(data) {}
+
+    private:
+        // silence MSVC warning C4512: assignment operator could not be generated
+        stateful_tag_type& operator= (stateful_tag_type const&);
     };
 
     namespace detail