On 6/29/21 6:01 PM, Marek Polacek wrote:
On Tue, Jun 29, 2021 at 03:50:27PM -0400, Jason Merrill wrote:
On 6/29/21 3:25 PM, Marek Polacek wrote:
--- a/gcc/testsuite/g++.dg/cpp0x/auto3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/auto3.C
@@ -10,7 +10,7 @@ auto x; // { dg-error "auto" }
auto i = 42, j = 42.0; // { dg-error "auto" }
// New CWG issue
Let's at least update this comment to quote [dcl.type.auto.deduct]/2: "T
shall not be an array type". I guess "unable to deduce" is a suitable
diagnostic for that error.
Fixed.
diff --git a/gcc/testsuite/g++.dg/diagnostic/auto1.C
b/gcc/testsuite/g++.dg/diagnostic/auto1.C
index ee2eefd59aa..9d9979e3fdc 100644
--- a/gcc/testsuite/g++.dg/diagnostic/auto1.C
+++ b/gcc/testsuite/g++.dg/diagnostic/auto1.C
@@ -1,4 +1,5 @@
// PR c++/86915
// { dg-do compile { target c++17 } }
+// Allowed since DR2397.
Well, not really; any attempt to use this template should hit the same
problem as above of trying to do auto deduction where T is an array type.
Please add to the testcase to get the error.
Hmm, this
template<auto [1]> struct S { };
static int arr[1];
S<arr> s;
won't give an error: I think it's because we coerce the auto tparm into 'auto*'
before deducing and so don't get the type mismatch error. That seems to be
in line with how 'template<int [1]>' works, though.
Ah, good point.
So I think we don't need to change this in the patch. Do you agree?
Yes, the patch is OK with the earlier comment tweak.
Jason