[Bug c++/97383] New: Consider special asing diagnostics for customization point objects
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Oct 12 13:39:27 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97383
Bug ID: 97383
Summary: Consider special asing diagnostics for customization
point objects
Product: gcc
Version: 11.0
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: ---
Inspired by
https://www.reddit.com/r/cpp/comments/j9ndx1/increased_complexity_of_c20_range_algorithms/g8ktca8
...
Errors involving C++20 CPOs mean that they are leaky abstractions:
prog.cc:22:50: error: no match for call to '(const std::ranges::__sort_fn)
(std::vector<Package>&, <brace-enclosed initializer list>, void
(Package::*)())'
The type __sort_fn is an implementation detail and ideally would not be visible
to users.
Would it be possible to show the name of the object std::ranges::sort instead
of its type?
Testcase (but the problem exists for every CPU in <algorithms> and <memory>:
#include <algorithm>
int cmp(int*, int*);
int main()
{
int i[2]{};
std::ranges::sort(i, &cmp);
}
Output from 'g++ -std=c++20 -Wfatal-errors':
s.C: In function ‘int main()’:
s.C:8:28: error: no match for call to ‘(const std::ranges::__sort_fn) (int [2],
int (*)(int*, int*))’
8 | std::ranges::sort(i, &cmp);
| ^
compilation terminated due to -Wfatal-errors.
The caret diagnostic is good and shows the useful context, but the type
"(const std::ranges::__sort_fn)" is not helpful to end users.
More information about the Gcc-bugs
mailing list