https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116144

            Bug ID: 116144
           Summary: Invalid array size value assigned with dependent name
                    in parameter of template function cannot be detected
                    by g++
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rush102333 at gmail dot com
  Target Milestone: ---

Consider the following code:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

template<typename T> void f(int a[(int)T()]);
void g() { f<char[10]>(0); }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There should be something wrong with "f<char[10]>" because the template
argument passed to "f"  is an array value and cannot be 
value-initialized, for instance, in the form of "char[10]()".

Both EDG and clang reject the code, but gcc accepts it. This will only happen
when the index value is related to a dependent name.

https://godbolt.org/z/GG4W5G755

Reply via email to