------- Comment #3 from pinskia at gcc dot gnu dot org  2008-07-17 20:24 -------
So here is how to get an ICE out of the trunk.
--- t.h ----
class A
{
    public:
        template <class T> static T foo1(T [3][3]);
};

template <class T> T A::foo1(T t[3][3])
{
    return t[0][1];
}

--- t.cc ---
#include "t.h"
#include "t.h"

---- CMD ---
g++ t.h
g++ t.cc

In file included from t.cc:2:
t.h:2: error: redefinition of 'class A'
t.h:3: error: previous definition of 'class A'
t.h:8: internal compiler error: canonical types differ for identical types T
[3] and T [3]
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

If we don't use a PCH, it works correctly.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |minor
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |diagnostic, error-recovery,
                   |                            |ice-on-invalid-code
   Last reconfirmed|0000-00-00 00:00:00         |2008-07-17 20:24:42
               date|                            |
            Summary|Two dimensional array in    |[4.3/4.4 Regression] Two
                   |template method argument    |dimensional array in
                   |list incorrectly            |template method argument
                   |interpreted.                |list incorrectly
                   |                            |interpreted.
   Target Milestone|---                         |4.3.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36852

Reply via email to