Boost C++ Libraries: Ticket #4109: xpressive compile error (MingW GCC 4.5) https://svn.boost.org/trac10/ticket/4109 <p> I'm using xpressive to parse my URI, but got errors as follow, I'm using MinGW GCC 4.5: </p> <p> In file included from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/grammar.hpp:20:0, </p> <blockquote> <p> from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/compile.hpp:27, from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/regex_primitives.hpp:32, from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/xpressive_static.hpp:24, from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/src/http/pre/uri.h:12, from c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/src/http/uri.cpp:10: </p> </blockquote> <p> c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/is_pure.hpp: In instantiation of 'boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt;': c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:85:5: instantiated from 'const int boost::mpl::aux::template_arity_impl&lt;boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt;, 1&gt;::value' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:93:5: instantiated from 'const int boost::mpl::aux::template_arity&lt;boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt; &gt;::value' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:98:30: instantiated from 'boost::mpl::aux::template_arity&lt;boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt; &gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/proto/traits.hpp:104:9: instantiated from 'boost::proto::is_callable&lt;boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt; &gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/proto/transform/make.hpp:243:84: instantiated from 'boost::proto::make&lt;boost::xpressive::detail::use_simple_repeat&lt;boost::proto::_child_c&lt;0&gt;, char&gt; &gt;::impl&lt;const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;, boost::xpressive::detail::static_xpression&lt;boost::xpressive::detail::alternate_end_matcher, boost::xpressive::detail::no_next&gt;, boost::xpressive::detail::xpression_visitor&lt;<span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;, mpl_::bool_&lt;false&gt;, boost::xpressive::cpp_regex_traits&lt;char&gt; &gt;&amp;&gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/proto/matches.hpp:692:21: [ skipping 21 instantiation contexts ] c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/compile.hpp:50:9: instantiated from 'void boost::xpressive::detail::static_compile_impl2(const Xpr&amp;, const boost::shared_ptr&lt;boost::xpressive::detail::regex_impl&lt;BidiIter&gt; &gt;&amp;, const Traits&amp;) [with Xpr = boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char [3]&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;, <a class="missing wiki">BidiIter</a> = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;, Traits = boost::xpressive::cpp_regex_traits&lt;char&gt;]' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/compile.hpp:79:9: instantiated from 'typename boost::disable_if&lt;boost::proto::result_of::matches&lt;Xpr, boost::xpressive::detail::XpressiveLocaleModifier&gt; &gt;::type boost::xpressive::detail::static_compile_impl1(const Xpr&amp;, const boost::shared_ptr&lt;boost::xpressive::detail::regex_impl&lt;BidiIter&gt; &gt;&amp;) [with Xpr = boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char [3]&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;, <a class="missing wiki">BidiIter</a> = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;, typename boost::disable_if&lt;boost::proto::result_of::matches&lt;Xpr, boost::xpressive::detail::XpressiveLocaleModifier&gt; &gt;::type = void]' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/compile.hpp:99:9: instantiated from 'void boost::xpressive::detail::static_compile(const Xpr&amp;, const boost::shared_ptr&lt;boost::xpressive::detail::regex_impl&lt;BidiIter&gt; &gt;&amp;) [with Xpr = boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char [3]&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;, <a class="missing wiki">BidiIter</a> = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/basic_regex.hpp:252:9: instantiated from 'void boost::xpressive::basic_regex&lt;<a class="missing wiki">BidiIter</a>&gt;::compile_(const Expr&amp;, mpl_::true_) [with Expr = boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char [3]&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;, <a class="missing wiki">BidiIter</a> = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;, mpl_::true_ = mpl_::bool_&lt;true&gt;]' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/basic_regex.hpp:133:9: instantiated from 'boost::xpressive::basic_regex&lt;<a class="missing wiki">BidiIter</a>&gt;&amp; boost::xpressive::basic_regex&lt;<a class="missing wiki">BidiIter</a>&gt;::operator=(const Expr&amp;) [with Expr = boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::bitwise_or, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::xpressive::detail::generic_quant_tag&lt;2u, 2u&gt;, boost::proto::argsns_::list1&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 1l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::posix_charset_placeholder&gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::shift_right, boost::proto::argsns_::list2&lt;const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;char [3]&gt;, 0l&gt;&amp;, const boost::proto::exprns_::expr&lt;boost::proto::tag::terminal, boost::proto::argsns_::term&lt;boost::xpressive::detail::range_placeholder&lt;char&gt; &gt;, 0l&gt;&amp;&gt;, 2l&gt;&amp;&gt;, 2l&gt;, <a class="missing wiki">BidiIter</a> = <span class="underline">gnu_cxx::</span>normal_iterator&lt;const char*, std::basic_string&lt;char&gt; &gt;]' <strong>c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/src/http/uri.cpp:109:58: instantiated from here</strong> c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/is_pure.hpp:201:5: error: no type named 'proto_tag' in 'struct boost::proto::_child_c&lt;0&gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/is_pure.hpp:203:9: error: no type named 'proto_tag' in 'struct boost::proto::_child_c&lt;0&gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/is_pure.hpp:203:9: error: no type named 'proto_tag' in 'struct boost::proto::_child_c&lt;0&gt;' c:/tools/msys/1.0/home/duzy/dev/ds/apps/MailerPro/../../../../open/boost_1_42_0/boost/xpressive/detail/static/is_pure.hpp:203:9: error: creating pointer to member of non-class type '&lt;type error&gt;' </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/4109 Trac 1.4.3 Duzy Chan <duzy@…> Sat, 17 Apr 2010 17:56:05 GMT attachment set https://svn.boost.org/trac10/ticket/4109 https://svn.boost.org/trac10/ticket/4109 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">untitled.JPG</span> </li> </ul> <p> Compilation tells error at line <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/109" title="#109: Bugs: counted_base::add_ref not overflow-safe (closed: Rejected)">#109</a> of my code </p> Ticket Duzy Chan <duzy@…> Sat, 17 Apr 2010 17:59:29 GMT attachment set https://svn.boost.org/trac10/ticket/4109 https://svn.boost.org/trac10/ticket/4109 <ul> <li><strong>attachment</strong> → <span class="trac-field-new">errors.txt</span> </li> </ul> <p> the error message reported by mingw gcc 4.5 </p> Ticket Duzy Chan <duzy@…> Sat, 17 Apr 2010 18:00:55 GMT cc set https://svn.boost.org/trac10/ticket/4109#comment:1 https://svn.boost.org/trac10/ticket/4109#comment:1 <ul> <li><strong>cc</strong> <span class="trac-author">duzy@…</span> added </li> </ul> Ticket Duzy Chan <duzy@…> Sat, 17 Apr 2010 18:01:35 GMT summary changed https://svn.boost.org/trac10/ticket/4109#comment:2 https://svn.boost.org/trac10/ticket/4109#comment:2 <ul> <li><strong>summary</strong> <span class="trac-field-old">xpressive compile error</span> → <span class="trac-field-new">xpressive compile error (MingW GCC 4.5)</span> </li> </ul> Ticket anonymous Sun, 18 Apr 2010 07:45:28 GMT <link>https://svn.boost.org/trac10/ticket/4109#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4109#comment:3</guid> <description> <p> I can confirm the problem for g++-4.5 in Debian Sid as well as cross-compilers to sparc-sun-solaris2.8, i386-portbld-freebsd7.2 and x86_64-portbld-freebsd7.2 built from unpatched gcc-4.5.0 sources. </p> <p> This seems to be related to optional subexpressions; at least I can make it show up with that. The simplest case I can come up with is </p> <pre class="wiki">#include &lt;boost/xpressive/xpressive.hpp&gt; int main() { using namespace boost::xpressive; // This compiles if rex is given as // sregex rex = _w; sregex rex = !_w; } </pre> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Sun, 18 Apr 2010 07:47:08 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/4109#comment:4 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4109#comment:4</guid> <description> <p> I mean g++-4.5 from Debian experimental (4.5.0-1), sorry. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Eric Niebler</dc:creator> <pubDate>Mon, 19 Apr 2010 23:17:29 GMT</pubDate> <title>status changed https://svn.boost.org/trac10/ticket/4109#comment:5 https://svn.boost.org/trac10/ticket/4109#comment:5 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">assigned</span> </li> </ul> <p> Yup, looks like xpressive is broken on gcc-4.5. Earlier versions of gcc are fine. </p> Ticket Eric Niebler Mon, 19 Apr 2010 23:24:39 GMT milestone changed https://svn.boost.org/trac10/ticket/4109#comment:6 https://svn.boost.org/trac10/ticket/4109#comment:6 <ul> <li><strong>milestone</strong> <span class="trac-field-old">Boost 1.43.0</span> → <span class="trac-field-new">Boost 1.44.0</span> </li> </ul> <p> changed milestone to 1.44. Too late for 1.43. </p> Ticket Eric Niebler Tue, 20 Apr 2010 00:51:26 GMT keywords changed https://svn.boost.org/trac10/ticket/4109#comment:7 https://svn.boost.org/trac10/ticket/4109#comment:7 <ul> <li><strong>keywords</strong> template_arity added </li> </ul> <p> After a bit of digging, it seems the problem is actually in MPL (and by admission, in xpressive's reliance on an implementation detail of MPL). The following program, which compiles on gcc-4.4 but not on gcc-4.5, demonstrates the problem: </p> <pre class="wiki"> #include &lt;boost/mpl/aux_/template_arity.hpp&gt; #include &lt;boost/mpl/aux_/lambda_arity_param.hpp&gt; template&lt;class A&gt; struct T : A::x {}; template&lt; class T BOOST_MPL_AUX_LAMBDA_ARITY_PARAM( int Arity = boost::mpl::aux::template_arity&lt;T&gt;::value ) &gt; struct S {}; template&lt;template&lt;class A&gt; class P, class X&gt; struct S&lt;P&lt;X&gt; BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(1)&gt; {}; int main() { S&lt;T&lt;int&gt; &gt; s0; } </pre> Ticket anonymous Tue, 20 Apr 2010 08:15:47 GMT <link>https://svn.boost.org/trac10/ticket/4109#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4109#comment:8</guid> <description> <p> Oh boy. There's a deep pool of template magic behind that one. </p> <p> It could be that I'm missing arcane properties of half-instantiated templates, but it looks to me like the problem is using an invalid type in the first place (T&lt;int&gt;). I'm actually a bit surprised that it doesn't complain about S&lt;T&lt;int&gt;, 1&gt;. </p> <p> In any case, if the tag only has to be there and isn't actually used, that offers a quick and rather dirty workaround, namely </p> <pre class="wiki">--- arg.hpp~ 2010-03-02 04:19:57.000000000 +0100 +++ arg.hpp 2010-04-20 10:08:28.000000000 +0200 @@ -142,6 +142,9 @@ template&lt;int N&gt; struct _child_c : transform&lt;_child_c&lt;N&gt; &gt; { + // Just to have one + typedef tag::comma proto_tag; + template&lt;typename Expr, typename State, typename Data&gt; struct impl : transform_impl&lt;Expr, State, Data&gt; { </pre><p> where boost::proto::tag::comma is chosen arbitrarily from a number of proto tags that allow boost::xpressive::detail::width_of to be instantiated without making any deeper inquiries about Expr. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Eric Niebler</dc:creator> <pubDate>Tue, 20 Apr 2010 23:01:13 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/4109#comment:9 https://svn.boost.org/trac10/ticket/4109#comment:9 <ul> <li><strong>status</strong> <span class="trac-field-old">assigned</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">duplicate</span> </li> </ul> <p> This is a duplicate of <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/4061" title="#4061: Bugs: [MPL] gcc-4.5 compilation problems related to arity_helper (closed: fixed)">#4061</a>. I can confirm that the patch attached to that ticket fixes this problem. It's too late for 1.43, but hopefully we can get it in for 1.44. </p> Ticket Duzy Chan <duzy@…> Wed, 21 Apr 2010 14:41:41 GMT <link>https://svn.boost.org/trac10/ticket/4109#comment:10 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/4109#comment:10</guid> <description> <p> So great to see post. Thanks, eric. </p> </description> <category>Ticket</category> </item> </channel> </rss>