Boost logo

Boost :

Subject: Re: [boost] [conversion] Need a help with MSVC failures
From: Antony Polukhin (antoshkka_at_[hidden])
Date: 2014-01-30 15:18:34


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.

-- 
Best regards,
Antony Polukhin

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