Boost logo

Boost :

Subject: [boost] [config] Changes needed for VC++ 2015 Update 3?
From: Beman Dawes (bdawes_at_[hidden])
Date: 2016-06-08 07:23:58


The VS 2015 Update 3 release candidate has been announced.

See
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/compiler-improvements-in-vs-2015-update-3-rc/

(The following is partially for Boost developers who care about msvc, and
partially to remind myself of what may need to be done to support update 3.
It will be several weeks before I can work on this, so if any of the other
config maintainers want to step in, please do so.)

Update 3 supports standards versioning switches similarly to gcc, clang,
and other compilers. We probably want to update Boost.Config accordingly.

See
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

Update 3 fixes lots of constexpr bugs, so we need to review whether or not
BOOST_NO_CXX11_CONSTEXPR is still required. Note that in develop there is
an undocumented config macro BOOST_MSVC_CXX11_CONSTEXPR that turns off
BOOST_NO_CXX11_CONSTEXPR to facilitate testing.

Update 3 fixes the expression SFINAE issues that were causing most of the
Boost develop test failures.

https://blogs.msdn.microsoft.com/vcblog/2016/06/07/expression-sfinae-improvements-in-vs-2015-update-3/

Quoting from that:

There are still three failing tests in the Boost [develop] test suite when
compiling with MSVC. Two test failures relate to using the noexcept
operator in a template type argument. We currently parse it immediately,
even in a dependent context. One test failure is a Boost library issue that
we’ve reported to the [library's] maintainers.

There are still known update 3 expression SFINAE issues (see "What remains
to be done?" in the blog article) so do we continue to define
BOOST_NO_SFINAE_EXPR? There is an undocumented BOOST_MSVC_SFINAE_EXPR macro
in develop that turns off BOOST_NO_SFINAE_EXPR, so it is easy for
developers to use msvc expression SFINAE if the want to. But our usual
criteria for a _NO_ macro is not full compliance, but whether or not Boost
code works with a feature. So using that criteria for update 3 we would
remove BOOST_NO_SFINAE_EXPR. Opinions?

--Beman

<aside>
We always urged Microsoft to test their releases against Boost. For update
3 expression SFINAE, they did exactly that. Thanks to Microsoft's Andrew
Pardoe for coordinated the effort and to Xiang Fan for running the tests
and tracking down the reason for each test failure. An undocumented
Boost.Config macro BOOST_MSVC_SFINAE_EXPR to support their testing. The
approach was to run tests for all libraries with the normal test setup, and
then run again with BOOST_MSVC_SFINAE_EXPR defined. If the problem was with
the Boost library, Xiang then reported it to me. I need to review a long
series of email exchanges with him to make sure I alerted library
maintainers to any Boost problems.
</aside>


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