In this testcase:

template <class T>
struct A
{
  template <class U> void f();  
  template <class U> void g();
};

template <class T>
struct B
{
  A<T> a;
  template <class U> void f();
  void h()
  {
    a.f<int>();
    a.g<int>();
  }
};

we currently accept the call to a.f, but reject the call to a.g.  It seems that
we're doing unqualified lookup that finds B::f, and as a result assume that
A::f will also be a template, which is an odd thing to do.


-- 
           Summary: g++ randomly does or doesn't require .template
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jason at gcc dot gnu dot org


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

Reply via email to