[Bug c++/25185] deep typedef substitution in error message

jason at redhat dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 2 20:35:00 GMT 2009



------- Comment #10 from jason at redhat dot com  2009-03-02 20:35 -------
Subject: Re:  deep typedef substitution in error message

dave at boost-consulting dot com wrote:
> Please assume I know what I'm asking for and stop turning it into a different
> problem.

I know what you're asking for.  I was explaining what GCC is doing that 
is giving you something other than what you want.  It isn't that GCC is 
preserving typedefs, it's that GCC is dumping the signature of the 
template rather than the instantiation.

> Go back and look at the original report more closely, particularly
> the part that discusses boost::result_of<CalcSize ()()>::type.

That comes from here:

       typedef range<
           Elements
         , Begin
         , End
         , typename result_of<CalcSize()>::type
       > type;

       template <class L, class B, class E, class C>
       type operator()(
           L const& m
         , B const& b
         , E const& e
         , C const& s
       ) const

That's what GCC is printing out.  And then it gives the arguments for 
all the template parameters.  To resolve the typename above GCC would 
have to print the instantiated signature, which it currently doesn't do.

> And lastly, I don't know GCC internals, so I'm unable to interpret the result
> of your proposed fix (of a problem I'm not having).

I figured you could apply the patch, rebuild GCC and see if the output 
was more to your liking.

Jason


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25185



More information about the Gcc-bugs mailing list