[Bug c++/79304] New: [7 Regression] diagnostic shows bogus expression ((X<T>*)this)->.c
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 31 12:53:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79304
Bug ID: 79304
Summary: [7 Regression] diagnostic shows bogus expression
((X<T>*)this)->.c
Product: gcc
Version: 7.0.1
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
struct C { };
template<class T>
struct X
{
C* c;
void f() {
this->c.s();
}
};
int main()
{
X<int> x;
x.f();
}
x.cc: In member function 'void X<T>::f()':
x.cc:9:13: error: request for member 's' in '((X<T>*)this)->.c', which is of
pointer type 'C*' (maybe you meant to use '->' ?)
this->c.s();
^
The ->.c part is bogus, that doesn't appear in the source, and isn't valid C++.
GCC 6 is correct:
x.cc: In instantiation of 'void X<T>::f() [with T = int]':
x.cc:16:7: required from here
x.cc:9:13: error: request for member 's' in '((X<int>*)this)->X<int>::c', which
is of pointer type 'C*' (maybe you meant to use '->' ?)
this->c.s();
~~~~~~~~^
If it's not a template we get ((X*)this)->X::c which is also correct.
More information about the Gcc-bugs
mailing list