[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