On Wed, Dec 13, 2023 at 08:48:49PM -0500, Jason Merrill wrote:
> On 11/27/23 10:58, Patrick Palka wrote:
> > gcc/cp/ChangeLog:
> > 
> >     * cp-tree.h (type_targs_deducible_from): Adjust return type.
> >     * pt.cc (alias_ctad_tweaks): Handle C++23 inherited CTAD.
> >     (inherited_ctad_tweaks): Define.
> >     (type_targs_deducible_from): Return the deduced arguments or
> >     NULL_TREE instead of a bool.  Handle 'tmpl' being a TREE_LIST
> >     representing a synthetic alias template.
> >     (ctor_deduction_guides_for): Do inherited_ctad_tweaks for each
> >     USING_DECL in C++23 mode.
> >     (deduction_guides_for): Add FIXME for stale cache entries in
> >     light of inherited CTAD.
> 
> check_GNU_style.py notices a few too-long lines in comments:
> 
> > === ERROR type #2: lines should not exceed 80 characters (3 error(s)) ===
> > gcc/cp/pt.cc:30076:80:                  /* FIXME this should mean they 
> > don't compare as equivalent.  */
> > gcc/cp/pt.cc:30138:80:   class template TMPL; adjust the base's guides be 
> > deduction guides for TMPL.  */
> > gcc/cp/pt.cc:30190:80:      /* If tmpl is a class template, this is 
> > trivial: it's deducible if TYPE is a
> 
> OK with those fixed.
 
> > index 4624794c4b7..74f92325d7a 100644
> > --- a/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
> > +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
> > @@ -1,5 +1,4 @@
> > -// Deduction from inherited constructors isn't supported yet, but we 
> > shouldn't
> > -// crash.  It may well be supported in C++23.
> > +// Deduction from inherited constructors isn't supported before C++23.
> >   //{ dg-do compile { target c++17 } }
> > @@ -17,5 +16,5 @@ int main()
> >   {
> >     B b = 42;                       // { dg-line init }
> >     // { dg-prune-output "no matching function" }
> > -  // { dg-error "class template argument deduction" "" { target *-*-* } 
> > init }
> > +  // { dg-error "class template argument deduction" "" { target c++23_down 
> > } init }
> >   }

I checked in this patch:

-- >8 --
The test says that CTAD from inherited constructors doesn't work
before C++23 so we should use c++20_down for the error.

gcc/testsuite/ChangeLog:

        * g++.dg/cpp1z/class-deduction67.C: Correct dg-error target.
---
 gcc/testsuite/g++.dg/cpp1z/class-deduction67.C | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C 
b/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
index 74f92325d7a..fa1523d99d5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction67.C
@@ -16,5 +16,5 @@ int main()
 {
   B b = 42;                    // { dg-line init }
   // { dg-prune-output "no matching function" }
-  // { dg-error "class template argument deduction" "" { target c++23_down } 
init }
+  // { dg-error "class template argument deduction" "" { target c++20_down } 
init }
 }

base-commit: e5e1999aa664333f766f3e6cc6996f769d50ae7a
-- 
2.43.0

Reply via email to