Boost logo

Boost :

From: Edward Diener (eldiener_at_[hidden])
Date: 2019-12-08 16:04:39


On 12/8/2019 7:20 AM, Tom Kent via Boost wrote:
> On Sat, Dec 7, 2019 at 12:51 AM Daniela Engert <dani_at_[hidden]> wrote:
>
>> Hi Tom!
>>
>> Am 06.12.2019 um 22:35 schrieb Tom Kent via Boost:
>>
>> On Thu, Dec 5, 2019 at 10:15 AM Daniela Engert via Boost <boost_at_[hidden]> wrote:
>>
>>
>> Am 05.12.2019 um 16:16 schrieb Tobias Loew via Boost:
>>
>>
>> http://boost.2283326.n4.nabble.com/release-proto-MSVC-19-24-28314-VS-2019-16-4-0-won-t-compile-proto-s-generate-hpp-td4710720.html
>>
>> cause it's a showstopper for the latest VS 2019 (16.4.0).
>>
>> It's not an error introduced in 1.72 but already there for a long time,
>>
>> and
>>
>> now the latest MSVC version produces an error on that MSVC-workaround.
>>
>> I've noticed this as well, today. As a quick hack I simply disabled the
>> workaround at line 233 for BOOST_MSVC >= 1924. Obviously, the problem
>> mentioned by the dead link is no longer a thing. With this modification,
>> Boost.Log is successfully compiling again.
>>
>>
>>
>> Can you verify that this is only VS 16.4.0 and doesn't apply to 16.3.x? If
>> so, that is scary.
>>
>> It definitely was compiling just fine until 16.3.7, because this was the
>> version that I have been using as my main compiler at work before switching
>> to 16.4.0 two days ago. Our ubiquitously used logging library depends on
>> Boost.Log which suddenly became affected from the workaround in Boost.Proto
>> no longer compiling.
>>
>> Unfortunately, I've never compiled our production code with any of the
>> 16.4-pre versions. I only did with my C++20 Modules experiments during my
>> talk preparations, but I noticed that despite the seemingly minor bump 16.3
>> -> 16.4, the compiler learned a couple of new features (e.g. concepts, the
>> new C++20 syntax). So, until there is a thorough exploration with all Boost
>> libs compiled with msvc 16.4.0 in all 4 modes (32/64, debug/release), there
>> might lurk other surprises as well.
>>
>> Ciao
>> Dani
>>
> I'm not sure I can reproduce this. I'm trying to run with four different
> configs:
>
> based on visual studio build tools 16.3.x
> toolset=msvc-14.2
> toolset=msvc-14.2 cxxflags=/std:c++latest
> based on visual studio build tools 16.4.0
> toolset=msvc-14.2
> toolset=msvc-14.2 cxxflags=/std:c++latest
>
> running in proto
> ..\..\b2 [config from above] test
> works fine for all versions....so this bug isn't covered by a test I'm
> guessing.
>
>
> Running in log
> ..\..\b2 [config from above] test
>
> causes the log build to fail for both 16.3 and 16.4 for the configurations
> that use cxxflags=/std:c++latest. This can be seen in the regression tests
> for boost.log:
> https://www.boost.org/development/tests/develop/developer/log.html
> https://www.boost.org/development/tests/master/developer/log.html
>
> teeks99-07-v16[m|d]-64onAMD64 is the normal msvc-14.2
> teeks99-07-v16[m|d]l-64onAMD64 is the msvc-14.2 with cxxflags=/std:c++latest
>
> The error looks something like this (and goes on for a bit)
>
> D:\boost\libs\log>..\..\b2 toolset=msvc-14.2 cxxflags=/std:c++latest test
> Performing configuration checks
>
> - default address-model : 32-bit (cached)
> - default architecture : x86 (cached)
> - symlinks supported : yes (cached)
> - native-atomic-int32-supported : yes (cached)
> - message-compiler : yes (cached)
> - native-syslog-supported : no (cached)
> - pthread-supports-robust-mutexes : no (cached)
> - compiler-supports-ssse3 : yes (cached)
> - compiler-supports-avx2 : yes (cached)
> - has_icu builds : no (cached)
> - BOOST_COMP_GNUC >= 4.3.0 : no (cached)
> - iconv (libc) : no (cached)
> - iconv (separate) : no (cached)
> - icu : no (cached)
> - icu (lib64) : no (cached)
> - message-compiler : yes (cached)
> ...patience...
> ...patience...
> ...patience...
> ...patience...
> ...patience...
> ...found 23437 targets...
> ...updating 334 targets...
> compile-c-c++
> ..\..\bin.v2\libs\log\build\msvc-14.2\debug\threadapi-win32\threading-multi\syslog_backend.obj
> syslog_backend.cpp
> D:\boost\boost/asio/async_result.hpp(44): error C2062: type 'bool'
> unexpected
> D:\boost\boost/asio/async_result.hpp(45): error C2143: syntax error:
> missing ';' before '{'
> D:\boost\boost/asio/async_result.hpp(45): error C2447: '{': missing
> function header (old-style formal list?)
> D:\boost\boost/asio/async_result.hpp(56): error C7568: argument list
> missing after assumed function template 'callable_with'
> D:\boost\boost/asio/async_result.hpp(58): note: see reference to class
> template instantiation 'boost::asio::detail::is_co

Testing on the 'develop' branch:

For what it is worth the Boost log problem is because msvc-14.2 in C20
mode rejects the syntax:

'concept bool' etc. when __cpp_concepts is 1.

My testing of asio with msvc-14.2 in c20 mode also fails for the same
reason.

>
>
> I tried a `D:\boost\libs\proto> git
> checkout ef2e94fe299449c4b23f305a854de0b5b48248be` and had the exact same
> results as above.
>
> Can you provide some steps to minimally reproduce this issue?


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