help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

error: no type named ‘iterator’ in ‘class std::unordered_map<...'


From: Samuel . Hornus
Subject: error: no type named ‘iterator’ in ‘class std::unordered_map<...'
Date: Sat, 22 Nov 2008 14:33:28 -0800 (PST)
User-agent: G2/1.0

Hi,
I have a problem with g++ 4.3.2 in -std=c++0x mode.
Here is some code which works fine:

struct My_data
{
  typedef std::map<Key, My_data, Compare> My_Map;   (***)
  typedef typename My_map::iterator My_iterator;
  // data members
  My_iterator cousin_;
};
typedef std::map<Key, My_data, Compare> My_Map;
My_map Family;

Note, that it uses My_data as the data_value for the std::map type
defined
in the My_data struct *itself*.
This works fine. But now I want to change std::map by
std::unordered_map.
So do I, with appropriate hash function and  Equality comparator.
But then, g++ 4.3.2 gives me the following error:

error: no type named ‘iterator’ in ‘class std::unordered_map<...'
at line (***). I know this does come from the fact that I'm using
My_data
as a template parameter inside the definition of the struct My_data
itself.
But... it did work for std::map... so why shouldn't it work for
unordered_map ?
Is there a workaround ? is this a bug of libstd++ ?
Thank you very much !
sam



reply via email to

[Prev in Thread] Current Thread [Next in Thread]