------- 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