This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836
- From: "glisse at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 11 Oct 2012 18:16:58 +0000
- Subject: [Bug c++/53055] ICE in cp_build_indirect_ref, at cp/typeck.c:2836
- Auto-submitted: auto-generated
- References: <bug-53055-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53055
--- Comment #8 from Marc Glisse <glisse at gcc dot gnu.org> 2012-10-11 18:16:58 UTC ---
Note: this is very old, I barely remember it.
(In reply to comment #6)
> Sorry, I think your message is not easily understandable. I think you are
> trying to say that "the right hand side must be a pointer-to-member",
No, I think I am saying: hello, this is the left hand side of a ->* operator,
and you are feeding me a pointer to member, which obviously should be on the
right hand side.
> I like more clang's message:
>
> /tmp/webcompile/_28618_0.cc:4:11: error: right hand operand to ->* has non
> pointer-to-member type 'void ()'
> int i = p ->* f ;
> ^ ~
The testcase in the patch has p ->* p, and clang says:
test.cc:2:11: error: left hand operand to ->* must be a pointer to class
compatible with the right hand operand, but is 'struct A::*'
int i = p ->* p ; // { dg-error "" }
^~~
.*
(not sure what that .* is doing there)
> I am not saying that you need to print the type or fix the location (it would
> be nice but I understand it is quite extra work, and could be done later). But
> the text could say: "type of right-side operand of %<->*%> is not
> pointer-to-member", or "right-side operand of %<->*%> has non pointer-to-member
> type" or "right-side operand of %<->*%> must have pointer-to-member type".
IIRC (and I could be wrong), this test is really about the lhs. Which doesn't
mean that the error message is good...