New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[range.iota, range.adaptors] View's synopses missing cross-references to iterator and sentinel members #2716
Comments
Ah, this maybe points at a larger issue: We have private "struct iterator" and "struct sentinel" for exposition only. Are these names part of the interface, or not? If they're not part of the interface, we should use non-C++ names and \placeholder for them, cf. node-handle. Also, once we do that, we can remove "private". |
Those names are not part of the interface. The library does not
|
@CaseyCarter: Private members are not as invisible as we might want them to be. Consider:
So, it's a material part of the class' interface whether there is a name "iterator" declared in the standard library class (even if private). |
But the comment exposition only means they are not part of the specified interface, not even as private members, at least that's what [expos.only.types] is supposed to mean. |
Since the implementation won't actually use the names I don't see any issue here. |
But for concepts, we mark them with \expos and we make them italics to shy away people from thinking those names mean anything in their programs. Why are we inconsistent for member types? |
I think that \placeholder was introduced to emphasize the exposition only nature of names in an accessible scope. Data members being private, \expos should be enough. |
Per #2475 (comment), these are bugs.
The text was updated successfully, but these errors were encountered: