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;
templateclass _Elem,
class _Traits,
class _Ax
class basic_string
: public _String_val_Elem, _Ax
{
public:
static const size_type npos;
};
templateclass _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_stringchar, char_traitschar, allocatorchar
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 {
templateclass _Ty class allocator
{
public:
typedef size_t size_type;
};
templateclass _Elem,
class _Traits,
class _Ax
class basic_string
{
public:
typedef typename _Ax::size_type size_type;
static const size_type npos;
};
templateclass _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_stringchar, char, allocatorchar
string;
};
class String {
typedef size_t size_type;
static const size_type npos = std::string::npos;
};