Boost logo

Boost Users :

From: Oleg Smolsky (oleg.smolsky_at_[hidden])
Date: 2005-08-02 15:59:26


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.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net