public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/102529] New: ctad for aliases fails in the presence of constraints
@ 2021-09-29 15:11 barry.revzin at gmail dot com
2021-09-29 15:24 ` [Bug c++/102529] " ppalka at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: barry.revzin at gmail dot com @ 2021-09-29 15:11 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
Bug ID: 102529
Summary: ctad for aliases fails in the presence of constraints
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: barry.revzin at gmail dot com
Target Milestone: ---
Here's an example:
template <typename T>
struct C {
template <typename U>
C(U);
};
template <typename U>
C(U) -> C<U*>;
template <typename T>
requires true
using A = C<T>;
C ok(1); // ok, a is a C<int*>
A bad(2); // fails
The provided error on gcc 11.2 (and trunk as of this writing) is:
<source>:15:8: error: class template argument deduction failed:
15 | A bad(2); // fails
| ^
<source>:15:8: error: no matching function for call to 'C(int)'
<source>:2:8: note: candidate: 'template<class T> C(C<T>)-> C<T> requires
__is_same(A<T>, C<T>)'
2 | struct C {
| ^
<source>:2:8: note: template argument deduction/substitution failed:
<source>:15:8: note: mismatched types 'C<T>' and 'int'
15 | A bad(2); // fails
| ^
<source>:4:5: note: candidate: 'template<class T, class U> C(U)-> C<T> requires
__is_same(A<T>, C<T>)'
4 | C(U);
| ^
<source>:4:5: note: template argument deduction/substitution failed:
<source>:15:8: note: couldn't deduce template parameter 'T'
15 | A bad(2); // fails
| ^
If you drop the "requires true" part of the alias template A, then this works.
As far as I understand the rules, this should work. MSVC accepts the example.
clang does not yet implement class template argument deduction for alias
templates.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
@ 2021-09-29 15:24 ` ppalka at gcc dot gnu.org
2022-06-02 19:22 ` ppalka at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: ppalka at gcc dot gnu.org @ 2021-09-29 15:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot gnu.org
CC| |ppalka at gcc dot gnu.org
Last reconfirmed| |2021-09-29
Status|UNCONFIRMED |ASSIGNED
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
2021-09-29 15:24 ` [Bug c++/102529] " ppalka at gcc dot gnu.org
@ 2022-06-02 19:22 ` ppalka at gcc dot gnu.org
2022-06-09 13:31 ` ppalka at gcc dot gnu.org
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-06-02 19:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Hmm, it looks like this issue isn't concepts specific. Any non-trivial alias
template, i.e. one that isn't just a renaming of the underlying template (in
the sense of cwg1286) exhibits this bug. We still reject the testcase if
define the alias template A as, say,
template <typename T>
using A = C<const T>;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
2021-09-29 15:24 ` [Bug c++/102529] " ppalka at gcc dot gnu.org
2022-06-02 19:22 ` ppalka at gcc dot gnu.org
@ 2022-06-09 13:31 ` ppalka at gcc dot gnu.org
2023-02-09 22:04 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-06-09 13:31 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|ppalka at gcc dot gnu.org |unassigned at gcc dot gnu.org
Status|ASSIGNED |NEW
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
` (2 preceding siblings ...)
2022-06-09 13:31 ` ppalka at gcc dot gnu.org
@ 2023-02-09 22:04 ` jason at gcc dot gnu.org
2023-03-09 15:28 ` cvs-commit at gcc dot gnu.org
2023-03-09 15:29 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2023-02-09 22:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
CC| |jason at gcc dot gnu.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
` (3 preceding siblings ...)
2023-02-09 22:04 ` jason at gcc dot gnu.org
@ 2023-03-09 15:28 ` cvs-commit at gcc dot gnu.org
2023-03-09 15:29 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-03-09 15:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:afe1f0c251d0429069c2414d4f3f14042efc174f
commit r13-6556-gafe1f0c251d0429069c2414d4f3f14042efc174f
Author: Jason Merrill <jason@redhat.com>
Date: Thu Feb 9 12:58:35 2023 -0800
c++: CTAD for less-specialized alias template [PR102529]
The standard was unclear what happens with the transformation of a
deduction
guide if the initial template argument deduction fails for a reason other
than not deducing all the arguments; my implementation assumed that the
right thing was to give up on the deduction guide. But in consideration of
CWG2664 this week I realized that we get a better result by just continuing
with an empty set of deductions, so the alias deduction guide is the same
as
the original deduction guide plus the deducible constraint.
DR 2664
PR c++/102529
gcc/cp/ChangeLog:
* pt.cc (alias_ctad_tweaks): Continue after deduction failure.
gcc/testsuite/ChangeLog:
* g++.dg/DRs/dr2664.C: New test.
* g++.dg/cpp2a/class-deduction-alias15.C: New test.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/102529] ctad for aliases fails in the presence of constraints
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
` (4 preceding siblings ...)
2023-03-09 15:28 ` cvs-commit at gcc dot gnu.org
@ 2023-03-09 15:29 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2023-03-09 15:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102529
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
Target Milestone|--- |13.0
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for GCC 13.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-03-09 15:29 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-29 15:11 [Bug c++/102529] New: ctad for aliases fails in the presence of constraints barry.revzin at gmail dot com
2021-09-29 15:24 ` [Bug c++/102529] " ppalka at gcc dot gnu.org
2022-06-02 19:22 ` ppalka at gcc dot gnu.org
2022-06-09 13:31 ` ppalka at gcc dot gnu.org
2023-02-09 22:04 ` jason at gcc dot gnu.org
2023-03-09 15:28 ` cvs-commit at gcc dot gnu.org
2023-03-09 15:29 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).