Boost logo

Boost-Commit :

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


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