I cannot reproduce the error without std.

I wrote an small testcase, wich one I include to make clear the situation.

The code:

#include <list>

template<class T>
class Test
{
    protected:
        typedef std::list<T> ListAlias;
        ListAlias list;
    public:
        typedef typename ListAlias::const_iterator const_iterator;
        inline const_iterator begin() const;

};

template<class T>
inline typename std::list<T>::const_iterator Test<T>::begin() const
{
    return list.begin();
};

The error:

test.cpp:16:46: error: prototype for 'typename std::list<T>::const_iterator
Test<T>::begin() const' does not match any in class 'Test<T>'
test.cpp:11:31: error: candidate is: Test<T>::const_iterator Test<T>::begin()
const

The ii file is really long with the include header, and I think that the
testcase is small.


-- 
           Summary: match a method prototyped a typedef alias with the
                    original type (using stdlib)
           Product: gcc
           Version: 4.5.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hugo dot arregui at gmail dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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

Reply via email to