Test support machinery changes needed to parse with EDG and compile with C1XX's /Za flag that disables MS extensions.
I try to make changes to <optional> and the optional/variant tests simultaneously in the MS STL and in libc++, which realistically requires that I keep the tests largely synchronized between libc++ and our internal test suite. As a first step toward automating that integration, I'd like to upstream this patch.
This change works around a couple of bugs:
- EDG doesn't like explicit constexpr in a derived class. This program:
struct Base {}; struct Derived : Base { constexpr Derived() = default; };
triggers "error: defaulted default constructor cannot be constexpr."
- C1XX with /Za has no idea which constructor needs to be valid for copy elision.
The change also conditionally disables parts of the msvc_stdlib_force_include.hpp header that conflict with external configuration when _LIBCXX_IN_DEVCRT is defined.