[ace-users] ACEXML/std::map interaction
Scott Smith
ssmith at mainstreamdata.com
Fri Jun 22 13:34:58 CDT 2007
ACE VERSION: 5.5.0
HOST MACHINE and OPERATING SYSTEM:
P4 2.54GHz, 1GB, Windows XP sp 2
TARGET MACHINE and OPERATING SYSTEM,
same
THE $ACE_ROOT/ace/config.h FILE
#define ACE_HAS_XML_SVC_CONF
#include "ace/config-win32.h"
AREA/CLASS/EXAMPLE AFFECTED:
ACEXML
DOES THE PROBLEM AFFECT:
COMPILATION? Yes (VS2005 sp1)
LINKING? na
EXECUTION? na
[Please indicate whether ACE, your application, or both are
affected.]
na
SYNOPSIS:
I am trying to use ACEXML to parse a file and part of the code in
the same module uses a map defined as:
typedef std::map<std::string, someobject> propertyMap;
I am getting the following error on the compile:
c:\program files\microsoft visual studio 8\vc\include\functional(143) :
error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const
std::_Tree<_Traits> &)' : could not deduce template argument for 'const
std::_Tree<_Traits> &' from 'const std::string'
c:\program files\microsoft visual studio
8\vc\include\xtree(1372) : see declaration of 'std::operator <'
c:\program files\microsoft visual studio
8\vc\include\functional(142) : while compiling class template member
function 'bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &)
const'
with
[
_Ty=std::string
]
c:\program files\microsoft visual studio 8\vc\include\map(72) :
see reference to class template instantiation 'std::less<_Ty>' being
compiled
with
[
_Ty=std::string
]
c:\program files\microsoft visual studio 8\vc\include\xtree(26)
: see reference to class template instantiation
'std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,_Mfl>' being compiled
with
[
_Kty=std::string,
_Ty=CDigester::PropertySetter ,
_Pr=std::less<std::string>,
_Alloc=std::allocator<std::pair<const
std::string,CDigester::PropertySetter >>,
_Mfl=false
]
c:\program files\microsoft visual studio 8\vc\include\xtree(68)
: see reference to class template instantiation
'std::_Tree_nod<_Traits>' being compiled
with
[
_Traits=std::_Tmap_traits<std::string,CDigester::PropertySetter
,std::less<std::string>,std::allocator<std::pair<const
std::string,CDigester::PropertySetter >>,false>
]
c:\program files\microsoft visual studio 8\vc\include\xtree(94)
: see reference to class template instantiation
'std::_Tree_ptr<_Traits>' being compiled
with
[
_Traits=std::_Tmap_traits<std::string,CDigester::PropertySetter
,std::less<std::string>,std::allocator<std::pair<const
std::string,CDigester::PropertySetter >>,false>
]
c:\program files\microsoft visual studio 8\vc\include\xtree(112)
: see reference to class template instantiation
'std::_Tree_val<_Traits>' being compiled
with
[
_Traits=std::_Tmap_traits<std::string,CDigester::PropertySetter
,std::less<std::string>,std::allocator<std::pair<const
std::string,CDigester::PropertySetter >>,false>
]
c:\program files\microsoft visual studio 8\vc\include\map(82) :
see reference to class template instantiation 'std::_Tree<_Traits>'
being compiled
with
[
_Traits=std::_Tmap_traits<std::string,CDigester::PropertySetter
,std::less<std::string>,std::allocator<std::pair<const
std::string,CDigester::PropertySetter >>,false>
]
c:\mainstream\development\visual studio
projects\niffileprocessor\digester.h(122) : see reference to class
template instantiation 'std::map<_Kty,_Ty>' being compiled
with
[
_Kty=std::string,
_Ty=CDigester::PropertySetter
]
c:\program files\microsoft visual studio 8\vc\include\functional(143) :
error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const
std::_Tree<_Traits> &)' : could not deduce template argument for 'const
std::_Tree<_Traits> &' from 'const std::string'
c:\program files\microsoft visual studio
8\vc\include\xtree(1372) : see declaration of 'std::operator <'
c:\program files\microsoft visual studio 8\vc\include\functional(143) :
error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const
std::_Tree<_Traits> &)' : could not deduce template argument for 'const
std::_Tree<_Traits> &' from 'const std::string'
c:\program files\microsoft visual studio
8\vc\include\xtree(1372) : see declaration of 'std::operator <'
c:\program files\microsoft visual studio 8\vc\include\functional(143) :
error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const
std::_Tree<_Traits> &)' : could not deduce template argument for 'const
std::_Tree<_Traits> &' from 'const std::string'
c:\program files\microsoft visual studio
8\vc\include\xtree(1372) : see declaration of 'std::operator <'
c:\program files\microsoft visual studio 8\vc\include\functional(143) :
error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const
std::vector<_Ty,_Alloc> &)' : could not deduce template argument for
'const std::vector<_Ty,_Alloc> &' from 'const std::string'
c:\program files\microsoft visual studio
8\vc\include\vector(1276) : see declaration of 'std::operator <'
Similar messages repeat numerous times.
If I change the std::string key in the map to "const char *", I
don't get the compile errors. If I remove the include of "#include
<ACEXML/common/DefaultHandler.h>" (still using std::string as the key
into the map), the only compile errors I get are undefines for the
ACEXML stuff.
The includes I am using look like:
#include <ace/OS.h>
#include <ACEXML/common/DefaultHandler.h>
#include "ACEXML/common/FileCharStream.h"
#include "ACEXML/common/StrCharStream.h"
#include "ACEXML/parser/parser/Parser.h"
#include <vector>
#include <map>
#include <fstream>
I've tried changing the order (doing the ace block last). It doesn't
make any difference. It appears to be some interaction between the
ACEXML class and std::string/std::map. Any thoughts about how I might
fix this?
Scott
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.isis.vanderbilt.edu/pipermail/ace-users/attachments/20070622/f139ce4a/attachment-0001.htm
More information about the Ace-users
mailing list