
Hello John, John Maddock wrote on 3/08/2005 at 2:43 a.m.:
I've just tried building it with the July build of Visual Studio 2005/VC8 , and it failed to update 8 targets. bjam output is below...
bjam "-sTOOLS=vc-8_0" "-sBUILD=debug release <runtime-link>dynamic <threading>multi" --prefix=..\boost --builddir=..\boost-obj This is getting ridiculous, seems like you can't use any part of the std lib with that compiler without having to work around thousands of warnings.
I guess calling std::equal<const char*, const char*> is dangerous if you don't check the lengths of the sequences first (I do though!), and in any case it shouldn't be an error! IMHO these errors aren't due to deprecation, but rather to "ambiguous call to overloaded function".
Can you see if the following snippet will compile: const char* p1, *p2, *p3; std::equal(p1, p2, p3); It doesn't. Here is the output:
C:\Program Files\vs8\VC\include\xutility(2649) : warning C4996: 'std::_Equal' was declared deprecated C:\Program Files\vs8\VC\include\xutility(2636) : see declaration of 'std::_Equal' Message: 'You have used a std:: construct that is not safe. See documentation on how to use the Safe Standard C++ Library' .\board.cpp(108) : see reference to function template instantiation 'bool std::equal<const char*,const char*>(_InIt1,_InIt1,_InIt2)' being compiled with [ _InIt1=const char *, _InIt2=const char * ] C:\Program Files\vs8\VC\include\xutility(2640) : error C2668: 'std::_Equal' : ambiguous call to overloaded function C:\Program Files\vs8\VC\include\xutility(2622): could be 'bool std::_Equal<const char*,_InIt2>(_InIt1,_InIt1,_InIt2,std::random_access_iterator_tag,std::_Range_checked_iterator_tag)' with [ _InIt2=const char *, _InIt1=const char * ] C:\Program Files\vs8\VC\include\xutility(2578): or 'bool std::_Equal<std::_Iter_random_helper<std::random_access_iterator_tag,std::random_access_iterator_tag>::_Iter_random_cat>(const char *,const char *,const char *,_InItCats,std::_Range_checked_iterator_tag)' with [ _InItCats=std::_Iter_random_helper<std::random_access_iterator_tag,std::random_access_iterator_tag>::_Iter_random_cat ] while trying to match the argument list '(const char *, const char *, const char *, std::_Iter_random_helper<std::random_access_iterator_tag,std::random_access_iterator_tag>::_Iter_random_cat, std::_Range_checked_iterator_tag)' C:\Program Files\vs8\VC\include\xutility(2649) : see reference to function template instantiation 'bool std::_Equal<const char*,_InIt2,std::_Iter_random_helper<std::random_access_iterator_tag,std::random_access_iterator_tag>::_Iter_random_cat>(_InIt1,_InIt1,_InIt2,_InItCats,std::_Unchecked_iterator_tag)' being compiled with [ _InIt2=const char *, _InIt1=const char *, _InItCats=std::_Iter_random_helper<std::random_access_iterator_tag,std::random_access_iterator_tag>::_Iter_random_cat ] .\board.cpp(108) : see reference to function template instantiation 'bool std::equal<const char*,const char*>(_InIt1,_InIt1,_InIt2)' being compiled with [ _InIt1=const char *, _InIt2=const char * ] Best regards, Oleg.