|
Boost : |
From: Daniela Engert (dani_at_[hidden])
Date: 2019-12-08 17:35:58
Hi Tom!
Am 08.12.2019 um 13:20 schrieb Tom Kent:
>
>
> On Sat, Dec 7, 2019 at 12:51 AM Daniela Engert <dani_at_[hidden]
> <mailto: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] <mailto: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
>
>
> 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?Â
>
This is not the compile error that I was running into, it's been the
same one as Tobias did. There's probably a small impedance mismatch: you
are talking about the unit tests, I was talking about the partial
exposure of Boost.Proto through Boost.Log as it is used in our codebase.
We are using /std:c++latest /permissive- /Zc:__cplusplus as the only
flags that might affect the compiler frontend. In this particular
scenario, compilation with msvc up to VS2019 update 3 was fine, but
started failing with update 4. I haven't run any of Boost's unit tests
for more than a year or so now. Therefore I can't give any additional
hints about how the later versions of msvc are faring there, sorry.
Ciao
 Dani
-- PGP/GPG: 2CCB 3ECB 0954 5CD3 B0DB 6AA0 BA03 56A1 2C4638C5
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk