aaron.ballman added a subscriber: hubert.reinterpretcast.
aaron.ballman added inline comments.


================
Comment at: clang/test/SemaCXX/paren-list-agg-init.cpp:276-285
+namespace gh62863 {
+int (&&arr)[] = static_cast<int[]>(42);
+// beforecxx20-warning@-1 {{aggregate initialization of type 'int[1]' from a 
parenthesized list of values is a C++20 extension}}
+int (&&arr1)[1] = static_cast<int[]>(42);
+// beforecxx20-warning@-1 {{aggregate initialization of type 'int[1]' from a 
parenthesized list of values is a C++20 extension}}
+int (&&arrr2)[2] = static_cast<int[]>(42); // expected-error {{reference to 
type 'int[2]' could not bind to an rvalue of type 'int[1]'}}
+// beforecxx20-warning@-1 {{aggregate initialization of type 'int[1]' from a 
parenthesized list of values is a C++20 extension}}
----------------
Fznamznon wrote:
> aaron.ballman wrote:
> > I'd like to see test coverage for:
> > ```
> > int (&&arr)[] = (int[])(42);
> > int (&&arr1)[1] = (int[])(42);
> > int (&&arrr2)[2] = (int[])(42);
> > int (&&arr3)[3] = (int[3])(42);
> > ```
> > where we're using a C-style cast, because: 
> > http://eel.is/c++draft/expr.cast#4
> Thank you for the review!
> 
> Just to double check, so it says:
> 
> > The conversions performed by ... *all named casts* can be performed using 
> > the cast notation of explicit type conversion.
> 
> Does that mean the c-style cast should produce the same thing? And, 
> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1975r0.html doesn't 
> say anything about c-style casts because it is assumed that it should be able 
> to do anything that `static_cast` can do?
> 
> gcc doesn't agree https://godbolt.org/z/Pfq8frdn9 . The funny thing is that 
> the original bug report seems to be using some kind of gcc test.
> Does that mean the c-style cast should produce the same thing? And, 
> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1975r0.html doesn't 
> say anything about c-style casts because it is assumed that it should be able 
> to do anything that static_cast can do?

Correct

> gcc doesn't agree https://godbolt.org/z/Pfq8frdn9 . The funny thing is that 
> the original bug report seems to be using some kind of gcc test.

MSVC and ICC both agree though, so I lean towards us being on the right path in 
allowing those casts. @hubert.reinterpretcast  -- do you have thoughts?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152003/new/

https://reviews.llvm.org/D152003

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to