mån 2009-09-14 klockan 11:27 +0200 skrev Guido Serassio: > Done. Sorry for the delay, but I'm very busy (as usual ...) > > I have placed the preprocessed source of two failing files > (IpIntercept.cc and QosConfig.cc) here: > > http://www.acmeconsulting.it/libip.zip
Odd... std::string::npos is declared as follows: namespace std; template<class _Elem, class _Traits, class _Ax> class basic_string : public _String_val<_Elem, _Ax> { public: static const size_type npos; }; template<class _Elem, class _Traits, class _Alloc> const typename basic_string<_Elem, _Traits, _Alloc>::size_type basic_string<_Elem, _Traits, _Alloc>::npos = (typename basic_string<_Elem, _Traits, _Alloc>::size_type)(-1); typedef basic_string<char, char_traits<char>, allocator<char> > string; Maybe Visual Studio drops the const attribute when trying to convert the value from "const std::string:size_type" to "const String::size_type" and gets lost somehow, even with the value as such being a simple size_t integer.. What does it say about the attached code? My attempt in isolating the String npos = std::string::npos code with as little change as possible (had to kill the char_traits thing as that used template syntax not accepted by G++ which slightly changes how size_type is declared) Regards Henrik
typedef long size_t; namespace std { template<class _Ty> class allocator { public: typedef size_t size_type; }; template<class _Elem, class _Traits, class _Ax> class basic_string { public: typedef typename _Ax::size_type size_type; static const size_type npos; }; template<class _Elem, class _Traits, class _Alloc> const typename basic_string<_Elem, _Traits, _Alloc>::size_type basic_string<_Elem, _Traits, _Alloc>::npos = (typename basic_string<_Elem, _Traits, _Alloc>::size_type)(-1); typedef basic_string<char, char, allocator<char> > string; }; class String { typedef size_t size_type; static const size_type npos = std::string::npos; };