Repository navigation
Error introduced by boost::core::launder #122
Description
Activity
That's unfortunate.
The only thing I can do is to revert #119.Yes. I wish we knew why this is causing an error. We just know what is causing it.
This should be fixed now by 8375df7.
Windows x86 is working now: https://drone.cpp.al/boostorg/url/2329/11/2
Thanks!
It's better to use
BOOST_WORKAROUND(BOOST_MSVC, < 1920)here because msvc-14.2 and above have no problems withlaunderand unversioned ifdefs aren't a good practice.But it might be even better to apply this workaround in
core/launder.hppinstead.I just wonder if this is a problem with
launderor with a combination of factors.It's a compiler bug in VS2017 (32 bit); an internal compiler error with
toolset=msvc-14.1 cxxstd=17 variant=release address-model=32.I mean, have other problems
std::launderbeen reported on this setup, other than the Optional use case? If not, it will be safer to fix it only in Optional.I think we only caught this bug in Boost.URL, but I think Christian has been using launder all around to eliminate
-Wmaybe-uninitializederrors. I think this bug is being propagated to other libraries. Still, the only reason we're not catching this bug in more libraries is that most people are not testing this rather unusual combination of factors.No, but
std::launderhasn't seen much use. I think it's fairly safe to say that using it under MSVC 14.1 is likely to run into errors with more complex expressions, and there's probably no upside because the compiler probably doesn't need it.Right, not many are testing msvc-14.1 in 32 bit mode.
boostorg/core@e4adc76 should make the workaround here unnecessary.
Thanks. I have reverted the fix in Optional.
The Boost.URL drone job for Windows (x86) broke in the last days from an old run to a more recent run. These two jobs are testing the very same commit: no code changes in Boost.URL. Also, it only fails in MSVC 14.1. MSVC 14.3 works fine.
Output
The message is very unhelpful but Peter helped me track down the error. We have a
pattern.cppsource file that includes Boost.Optional and the error goes away when we check out any version of Boost.Optional before e31cf6f. In particular, the error goes away if we comment out:Unfortunately, I can't identify why this is causing an error. We could only identify what is causing it.
This is also related to #121.