c++ - typenamed iterator is not a type -


i'm writing templated class, involves use of iterators. i've found many questions how need typename iterator if you're using template, i'm wondering why it's still not working.

#pragma once  #include <iterator> #include <list> #include <tuple>  template <class t> class quack {     private:         std::list<t> data;         typename std::list<t>::iterator iter;      public:         quack();          void insert(t dat);         std::tuple<t, t> poppop();      private:         //error: 'iter' not name type         iter binarysearch(t tofind, std::list<t>::iterator min, std::list<t>::iterator max); }; 

i tried typedef typename std::list<t>::iterator iter;, throws error "std::list::iterator not type"

so given i'm using typename, i'm doing wrong?

i'm using g++ 4.4.5 argument -std=c++0x, if it's relevant.

you want typedef there (right you're declaring object named iter):

typedef typename std::list<t>::iterator iter; 

also, need typename in declaration of binarysearch:

 iter binarysearch(t tofind, typename std::list<t>::iterator min, typename std::list<t>::iterator max); 

of course, can use iter @ point:

iter binarysearch(t tofind, iter min, iter max); 

Comments

Popular posts from this blog

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -