The fixes for this are contained in the develop branch and only need to be merged. And yes it (obviously) was a MSVC bug and it seems to be resolved now. PS: And yes MSVC is a moving target. But concluding that it should not be supported by boost would be short-sighted. There are just to many users of Boost with MSVC and they rely on Boost abstracting all those dirty details relating to compiler bugs away (as well as platform dependencies etc). Am 11.07.2018 um 16:56 schrieb Vinnie Falco via Boost:
On Wed, Jul 11, 2018 at 7:49 AM, degski via Boost
wrote: This thread shows how and why it's important to get boost to build with Clang/LLVM (clang-cl), as VS is (still) a moving target and clang probably already has it right. By reporting those bugs MS (which it possibly is), you'll also be helping VS (and your-selves) forward. Trying to fix a build of Boost with a vaporware like VS 15.6.6 seems a waste of time and is highly irrelevant. I couldn't disagree more (although, Boost should also be compiled with clang-cl if it is not discontinued). The latest Visual Studio is not vaporware it is a released, shipping product which many people use to accomplish real work. And in fact, I suspect that Visual Studio actually fixed a bug which is what is causing this new compilation error.
The code in question which fails is:
BOOST_DEDUCED_TYPENAME difference_type n;
This, to my eye, should not compile as the code appears in a class template where difference_type is a nested type of the base class and should not be visible unqualified. The resulting errors appear in the log I linked. Changing that code to the following:
BOOST_DEDUCED_TYPENAME BidirectionalIteratorConcept<Iterator>::difference_type n;
resolves the error for _MSC_VER >= 1912