https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118917
Bug ID: 118917
Summary: 'class declared private here' points to definition
instead
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: blubban at gmail dot com
Target Milestone: ---
class a {
private:
class b;
};
class a::b {};
void c(a::b&) {}
Expected:
<source>: In function 'void c(a::b&)':
<source>:6:11: error: 'class a::b' is private within this context
6 | void c(a::b&) {}
| ^
<source>:3:11: note: declared private here
3 | class b;
| ^
Actual:
<source>: In function 'void c(a::b&)':
<source>:6:11: error: 'class a::b' is private within this context
6 | void c(a::b&) {}
| ^
<source>:5:10: note: declared private here
5 | class a::b {};
| ^
That's the definition, not the declaration; it's not where the class is made
private.
If you remove line 5, it correctly points to the declaration on line 3.