Boost logo

Boost :

Subject: Re: [boost] [conversion] Need a help with MSVC failures
From: Edward Diener (eldiener_at_[hidden])
Date: 2014-01-30 18:12:34


On 1/30/2014 3:18 PM, Antony Polukhin wrote:
> 2014-01-30 Edward Diener <eldiener_at_[hidden]>
>
>> On 1/30/2014 3:14 AM, Antony Polukhin wrote:
>>
>>> 2014-01-30 Edward Diener <eldiener_at_[hidden]>
>>>
>>> On 1/30/2014 12:24 AM, Antony Polukhin wrote:
>>>>
>>>> Hi,
>>>>>
>>>>> Some of the tests for Boost.LexicalCast fail on any MSVC compiler.
>>>>> Unfortunately currently I have no access to Windows.
>>>>>
>>>>> Could someone please investigate the failures and tell me were to search
>>>>> the bug?
>>>>>
>>>>>
>>>>> From where are the lexical_cast tests run in modular-boost ?
>>>>
>>>>
>>> boost/libs/conversion/test/
>>>
>>
>> I assume this is in the develop branch tests. Running the tests on my
>> machine, with msvc-12.0 I see two failures.
>>
>> First is:
>>
>> lexical_cast_loopback_test.cpp(55): error in
>> "test_round_conversion_double": check min_ == lexical_cast<T>(min_s)
>> failed
>> lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_long_double":
>> check min_ == lexical_cast<T>(min_s) failed
>>
>> This looks like the roundtrip conversion with double and long double is
>> not accurate enough.
>>
>
> It's a known and ancient error on MSVC.
>
>
>> Second is:
>>
>> lexical_cast_containers_test.cpp
>> C:\Programming\VersionControl\modular-boost\boost/intrusive/
>> detail/has_member_function_callable_with.hpp(200) : error C2228: left of
>> '.select_on_container_copy_construction' must have class/struct/union
>> type is 'boost::move_detail::add_rvalue_reference<U>::type'
>>
>> C:\Programming\VersionControl\modular-boost\boost/intrusive/
>> detail/has_member_function_callable_with.hpp(276) : see reference to
>> class template instantiation 'boost::container::container_
>> detail::has_member_function_callable_with_select_on_
>> container_copy_construction_impl<Fun,true,>' being compiled
>> with
>> [
>> Fun=std::allocator<char>
>> ]
>>
>> C:\Programming\VersionControl\modular-boost\boost/container/allocator_traits.hpp(262)
>> : see reference to class template instantiation
>> 'boost::container::container_detail::has_member_function_
>> callable_with_select_on_container_copy_construction<const Alloc,>' being
>> compiled
>> with
>> [
>> Alloc=std::allocator<char>
>> ]
>>
>> C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(76)
>> : see reference to class template instantiation
>> 'boost::container::allocator_traits<Allocator>' being compiled
>> with
>> [
>> Allocator=std::allocator<char>
>> ]
>>
>> C:\Programming\VersionControl\modular-boost\boost/container/string.hpp(473)
>> : see reference to class template instantiation
>> 'boost::container::container_detail::basic_string_base<Allocator>' being
>> compiled
>> with
>> [
>> Allocator=std::allocator<char>
>> ]
>> lexical_cast_containers_test.cpp(35) : see reference to class
>> template instantiation 'boost::container::basic_
>> string<char,std::char_traits<char>,std::allocator<char>>' being compiled
>>
>> It looks like 'boost::move_detail::declval<F>()' is not resolving to
>> anything but I will let you figure this out.
>>
>
> It's a Boost.Container library issue. I think maintainer knows about it:
> that issue sometimes appear in develop branch, and always get fixed in a
> few weeks.
>
>
>> One thing I noticed. The tester must run 'b2 headers' after getting the
>> conversion 'develop' branch and before running the tests. This is because
>> of the hard link issue I have brought up a number of times on this mailing
>> list.
>>
>
> Yep, that annoys sometimes.
>
>
> Thanks a lot for helping!
> But regression tests still report a lot of errors on MSVC:
> http://www.boost.org/development/tests/develop/developer/conversion.html
> Could you please run same tests using Boost.Test from 'develop' branch? I
> think now that errors came from Boost.Test library.

The issue is not Boost.Test but from something else in the 'develop'
branch which either lexical_cast or the lexical_cast tests depend on. If
I change completely to the current top-level 'develop' branch, updating
all submodules to 'develop', and run the conversion tests I see about 10
crashes when the tests are run. However if I change to the top-level
master branch, update all submodules to master, update lexical_cast,
intrusive, and Boost test to 'develop', there is only the round-trip,
for double and long double, occuring and no crashes.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk