[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