Date
2010-02-15.00:00:00
Message id
2510

Content

Proposed resolution (February, 2010):

  1. Add the following as a new paragraph following 13.7.2.5 [temp.static] paragraph 1:

  2. An explicit specialization of a static data member declared as an array of unknown bound can have a different bound from its definition, if any. [Example:

      template<class T> struct A {
        static int i[];
      };
      template<class T> int A<T>::i[4];    // 4 elements
      template<> int A<int>::i[] = { 1 };  // 1 element, OK
    

    end example]

  3. Change 13.8.3.3 [temp.dep.expr] paragraph 3 as follows:

  4. An id-expression is type-dependent if it contains:

    • an identifier that was declared with a dependent type,

    • a template-id that is dependent,

    • a conversion-function-id that specifies a dependent type, or

    • a nested-name-specifier or a qualified-id that names a member of an unknown specialization.;

    or if it names a static data member of the current instantiation that has type “array of unknown bound of T” for some T (13.7.2.5 [temp.static]). Expressions of the following forms are type-dependent only if...