------- Comment #5 from mmitchel at gcc dot gnu dot org 2006-06-15 01:51 ------- John and I talked about this a bit more, and he's going to update the core issue.
To me, there are only a few options here: 1. S<T>::i has non-dependent type "int[]". In that case, the sizeof expression is an error. 2. S<T>::i has non-dependent type "int[1]". In that case, the explicit specialization is an error. 3. S<T>::i has dependent type. But, why should it? It doesn't use any template parameters. I like option #2 best. If the in-class declaration for the code in the original report were "static char const name[1]" then everyone would agree the specialization is invalid. Why should it make a difference whether the size of the array is explicitly specified or implied by the initializer? That distinction doesn't matter anywhere else in the language. My second choice is option #1. I'm going to close this PR as invalid. I don't think there's clear support for this code in the standard. -- mmitchel at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27347