[Bug c++/85515] New: Bogus suggestions from "GCC's leaky abstractions"
dmalcolm at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Apr 24 14:41:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85515
Bug ID: 85515
Summary: Bogus suggestions from "GCC's leaky abstractions"
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: dmalcolm at gcc dot gnu.org
Target Milestone: ---
Jason Turner's video C++ Weekly - Ep 112 - GCC's Leaky Abstractions
https://www.youtube.com/watch?v=S9_mYmvO4Ow
shows two issues where g++ offers suggestions about implementation details:
Example 1:
int main ()
{
auto lambda = [val = 2](){};
lambda.val;
}
<source>: In function 'int main()':
<source>:5:10: error: 'struct main()::<lambda()>' has no member named 'val';
did you mean '__val'?
lambda.val;
^~~
__val
Compiler returned: 1
Example 2:
void test ()
{
int arr[] = {1, 2, 3, 4, 5};
for (const auto v: arr) {
_forbegin
}
}
<source>: In function 'void test()':
<source>:5:5: error: '_forbegin' was not declared in this scope
_forbegin
^~~~~~~~~
<source>:5:5: note: suggested alternative: '__for_begin'
_forbegin
^~~~~~~~~
__for_begin
Compiler returned: 1
In the video, he uses these suggestions to get a glimpse behind the
abstraction.
We shouldn't offer these suggestions; one way would be to exclude fieldnames
that begin with two underscores.
More information about the Gcc-bugs
mailing list