https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109647
Bug ID: 109647 Summary: ranges:6151:14: error: requires clause differs in template redeclaration rejected by clang++ 16.0.2 Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: redi at gcc dot gnu.org Target Milestone: --- Apparently, clang++ 16.0.2 can't digest libstdc++ version of ranges header file: echo '#include <ranges>' | clang++ -x c++ - -c -std=c++2b In file included from <stdin>:1: /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:6151:14: error: requires clause differs in template redeclaration requires forward_range<_Vp> ^ /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:5850:14: note: previous template declaration is here requires input_range<_Vp> ^ /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:8846:20: error: type-id cannot have a name { return (auto(__x) += __y); } ^ /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:8846:25: error: expected ')' { return (auto(__x) += __y); } ^ /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:8846:14: note: to match this '(' { return (auto(__x) += __y); } ^ /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/ranges:8846:32: error: expected expression { return (auto(__x) += __y); } ^ 4 errors generated. $ echo '#include <ranges>' | g++-13 -x c++ - -c -std=c++2b (ok)