Date
2004-09-10.00:00:00
Message id
612

Content

The examples corrected by issue 24 are still wrong in one case.

In item #4 (a correction to the example in paragraph 18), the proposed resolution is:

  template<class T1> class A {
    template<class T2> class B {
      template<class T3> void mf1(T3);
        void mf2();
      };
  };
  template<> template<class X>
    class A<int>::B { };
  template<> template<> template<class T>
    void A<int>::B<double>::mf1(T t) { }
  template<class Y> template<>
    void A<Y>::B<double>::mf2() { } // ill-formed; B<double> is specialized but
                                    // its enclosing class template A is not

The explicit specialization of member A<int>::B<double>::mf1 is ill-formed. The class template A<int>::B is explicitly specialized and contains no members, so any implicit specialization (such as A<int>::B<double>) would also contain no members.