stdcxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Liviu Nicoara <nico...@roguewave.com>
Subject Re: stdcxx compilation error
Date Thu, 16 Nov 2006 16:27:19 GMT
Templates are good. :-)

The compiler complains that it cannot match what you gave it 
(std::map<key, value, std::less<key> >) with the actual type 
(std::map<key, value, custom_comparator>). To directly answer your 
question, it is an incorrect use of a template type, flagged by a 
compliant compiler, and the code in the "for" loop is "bad".

Nadine Faizant wrote:
> 
>    Thanks, I notice that. What I want to know, is it forbidden by VC or 
> the STL or the use of template. Sorry, but I love c++ but hate template...
>    so I don't know if the code is bad or not... :-(
> 
> ----- Original Message ----- From: "Liviu Nicoara" <nicoara@roguewave.com>
> To: <stdcxx-user@incubator.apache.org>
> Sent: Thursday, November 16, 2006 5:04 PM
> Subject: Re: stdcxx compilation error
> 
> 
>> At a glance it appears that in the for loop you create a const 
>> iterator for:
>>
>> std::map< key, value >
>>
>> which uses the default std::map comparator (std::less<key>) whereas 
>> the actual type of "compounds" is:
>>
>> std::map< key, value, CompareBoWTokenPtr >
>>
>> HTH.
>>
>> Nadine Faizant wrote:
>>> Hello,
>>>
>>> I try to compile this code with stdcxx (code which compile with gcc + 
>>> gccstl).
>>>
>>> I don't understand why I get an error
>>>
>>> void toto(const SentenceCompoundsData& compounds) const
>>> ** for (std::map< Common::BagOfWords::BoWToken*, std::deque< 
>>> PhoenixGraphVertex > >::const_iterator 
>>> compoundsIt(compounds.begin());compoundsIt != compounds.end(); 
>>> compoundsIt++)
>>>
>>> {
>>>
>>> .....
>>>
>>> }
>>>
>>> }
>>>
>>>
>>> where SentenceCompoundsData is defined as
>>> typedef std::map< Common::BagOfWords::BoWToken*, std::deque< 
>>> PhoenixGraphVertex >, CompareBoWTokenPtr > SentenceCompoundsData;
>>>
>>> OUTPUT : see attached file (error point to line **)
>>>
>>> I dont' know if it is a problem of STL or more a problem of 
>>> compilation. If I try this, it works.
>>>
>>> for (SentenceCompoundsData ::const_iterator 
>>> compoundsIt(compounds.begin());compoundsIt != compounds.end(); 
>>> compoundsIt++)
>>>
>>> Thanks for help,
>>>
>>>     Nadine
>>>
>>>
>>> --------------------------------------------------------------------------------

>>>
>>>
>>> Nadine Faizant NewPhenix Z.A. - 5, Rue de l'Auberte 30 133 Les Angles 
>>> Tél : 04 90 26 74 82 Fax : 04 90 26 90 84 Courriel : 
>>> nadine.faizant@nautitia.fr 
>>> --------------------------------------------------------------------------------

>>>
>>>
>>
>>
> 
> 
> 


Mime
View raw message