The following code compiles if (and only if) the global function name and A's
member function name are identical. It shouldn't, because a.template should be
used inside the test() function in the global scope.

template <class T> class A
{
public:
  template <class U> void test(T value) {}
};

template <class T> void test(A<T>& a, T val)
{
  a.test<int>(val); //should be a.template test<int>(val);
}

int main()
{
}

-- 
           Summary: Function names affect template compilation
           Product: gcc
           Version: 3.4.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: topiolli at ee dot oulu dot fi
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: 3.4.1-4mdk
  GCC host triplet: Mandrakelinux 10.1
GCC target triplet: i586


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

Reply via email to