Re: [Boost-bugs] [Boost C++ Libraries] #4109: xpressive compile error (MingW GCC 4.5)

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #4109: xpressive compile error (MingW GCC 4.5)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-04-20 08:15:48


#4109: xpressive compile error (MingW GCC 4.5)
----------------------------------------+-----------------------------------
 Reporter: Duzy Chan <duzy@…> | Owner: eric_niebler
     Type: Bugs | Status: assigned
Milestone: Boost 1.44.0 | Component: xpressive
  Version: Boost 1.42.0 | Severity: Problem
 Keywords: is_pure template_arity |
----------------------------------------+-----------------------------------

Comment(by anonymous):

 Oh boy. There's a deep pool of template magic behind that one.

 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<int>). I'm actually a bit surprised that it doesn't
 complain about S<T<int>, 1>.

 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
 {{{
 --- 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<int N>
      struct _child_c : transform<_child_c<N> >
      {
 + // Just to have one
 + typedef tag::comma proto_tag;
 +
          template<typename Expr, typename State, typename Data>
          struct impl : transform_impl<Expr, State, Data>
          {
 }}}

 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.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/4109#comment:8>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:02 UTC