[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 --- Comment #3 from CVS Commits --- The releases/gcc-10 branch has been updated by Patrick Palka : https://gcc.gnu.org/g:652ec7e8c046b239c42dedd295acf1815ed2b93a commit r10-8288-g652ec7e8c046b239c42dedd295acf1815ed2b93a Author: Patrick Palka Date: Thu Jun 11 16:33:41 2020 -0400 c++: constrained class template friend [PR93467] This fixes two issues in our handling of constrained class template friend declarations. The first issue is that we fail to set the constraints on the injected class template declaration during tsubst_friend_class. The second issue is that the template parameter levels within the parsed constraints of a class template friend declaration are shifted if the enclosing class is a template, and this shift leads to spurious constraint mismatch errors in associate_classtype_constraints if the friend declaration refers to an already declared class template. gcc/cp/ChangeLog: PR c++/93467 * constraint.cc (associate_classtype_constraints): If there is a discrepancy between the current template depth and the template depth of the original declaration, then adjust the template parameter depth within the current constraints appropriately. * pt.c (tsubst_friend_class): Substitute into and set the constraints on the injected declaration. gcc/testsuite/ChangeLog: PR c++/93467 * g++.dg/cpp2a/concepts-friend6.C: New test. * g++.dg/cpp2a/concepts-friend7.C: New test. (cherry picked from commit 11c7261128ad3ee136508703b20e45cbe04f8dd0)
[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 Patrick Palka changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED Target Milestone|--- |10.2 --- Comment #4 from Patrick Palka --- Fixed for GCC 10.2+.
[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 --- Comment #2 from CVS Commits --- The master branch has been updated by Patrick Palka : https://gcc.gnu.org/g:11c7261128ad3ee136508703b20e45cbe04f8dd0 commit r11-1243-g11c7261128ad3ee136508703b20e45cbe04f8dd0 Author: Patrick Palka Date: Thu Jun 11 16:33:41 2020 -0400 c++: constrained class template friend [PR93467] This fixes two issues in our handling of constrained class template friend declarations. The first issue is that we fail to set the constraints on the injected class template declaration during tsubst_friend_class. The second issue is that the template parameter levels within the parsed constraints of a class template friend declaration are shifted if the enclosing class is a template, and this shift leads to spurious constraint mismatch errors in associate_classtype_constraints if the friend declaration refers to an already declared class template. gcc/cp/ChangeLog: PR c++/93467 * constraint.cc (associate_classtype_constraints): If there is a discrepancy between the current template depth and the template depth of the original declaration, then adjust the template parameter depth within the current constraints appropriately. * pt.c (tsubst_friend_class): Substitute into and set the constraints on the injected declaration. gcc/testsuite/ChangeLog: PR c++/93467 * g++.dg/cpp2a/concepts-friend6.C: New test. * g++.dg/cpp2a/concepts-friend7.C: New test.
[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 Patrick Palka changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 Patrick Palka changed: What|Removed |Added CC||ppalka at gcc dot gnu.org Known to fail||10.0, 11.0 Last reconfirmed|2020-01-28 00:00:00 |2020-5-26 --- Comment #1 from Patrick Palka --- Reconfirmed on trunk. I ran into this when writing a fix for PR libstdc++/95322.. Here is another valid testcase which we reject: template requires B class C; template class S { template requires B friend class ::C; }; testcase.C:8:20: error: ‘C’ does not match original declaration 8 | friend class ::C; |^ testcase.C:2:9: note: original template declaration here 2 | class C; | ^
[Bug c++/93467] [concepts] getting "type constraint differs in template redeclaration" error after friend declaration in template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93467 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2020-01-28 CC||marxin at gcc dot gnu.org Ever confirmed|0 |1