[expr.call]/2 Unclear specification for virtual function calls P4176
Nobody has claimed this yet.
- Dominant language
- TeX
- Stars
- 221
- Forks
- 813
- Avg merge
- 16h 4m
- Merged PRs (30d)
- 36
Description
[expr.call]/2 says
If the selected function is non-virtual, or if the id-expression in the class member access expression is a qualified-id, that function is called. Otherwise, its final overrider in the dynamic type of the object expression is called; such a call is referred to as a virtual function call.
First, it should use "of" instead of "in". Consider ::x.foo().
Second, the "class member access expression" comes from nowhere, lacking a condition like "if the postfix-expression is a class member access expression".
Note that both would be resolved if P4176 is adopted.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at [expr.call]/2 in the C++ draft and compare its wording with P4176. Check how the paragraph handles ::x.foo() and the missing class member access condition; the work is done when both specification concerns are resolved, either by the paragraph or by adoption of P4176.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 75/100