Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
dc10310
Toolset update.
StephanTLavavej May 12, 2021
060e15b
Remove workarounds for VSO-1309454 (duplicated deduction guides).
StephanTLavavej May 12, 2021
b92c830
Remove most workarounds for DevCom-952724.
StephanTLavavej May 12, 2021
ce539c7
Unskip bit_ceil.fail.cpp.
StephanTLavavej May 12, 2021
925f8f5
Remove workarounds for VSO-1270433.
StephanTLavavej May 12, 2021
c072c94
Enable P1065R2 coverage in Dev11_0535636_functional_overhaul.
StephanTLavavej May 12, 2021
488c3fa
Remove workarounds for DevCom-1337958.
StephanTLavavej May 12, 2021
80bf726
Remove workarounds for DevCom-1338628.
StephanTLavavej May 12, 2021
07e5f87
Remove workaround for DevCom-939485.
StephanTLavavej May 12, 2021
a4ae705
Remove workarounds for VSO-1079405.
StephanTLavavej May 12, 2021
252105c
Remove workarounds for VSO-1075296.
StephanTLavavej May 12, 2021
edd74fe
Remove workarounds for VSO-671180.
StephanTLavavej May 12, 2021
8cb89d3
VSO-590216 wasn't completely fixed.
StephanTLavavej May 12, 2021
c05cf4d
Remove VSO-897887 workaround.
StephanTLavavej May 12, 2021
333e4a1
Remove VSO-1269781 workaround.
StephanTLavavej May 12, 2021
1b93792
Remove VSO-1217687 workarounds.
StephanTLavavej May 12, 2021
e945efe
Remove VSO-1268140 workarounds.
StephanTLavavej May 12, 2021
6ffc6f6
Remove DevCom-1344701 workaround.
StephanTLavavej May 12, 2021
f52bdbd
Remove VSO-1269976 workarounds.
StephanTLavavej May 12, 2021
afd37c2
Remove VSO-948614 workaround.
StephanTLavavej May 12, 2021
e9b293d
Remove VSO-977008 workaround.
StephanTLavavej May 12, 2021
f79b1fe
VSO-1270011 wasn't completely fixed.
StephanTLavavej May 12, 2021
8e81e4c
Remove VSO-1292292 workaround.
StephanTLavavej May 12, 2021
8703b2f
Remove VSO-985022 workaround.
StephanTLavavej May 12, 2021
8231905
Remove VSO-629490 workaround.
StephanTLavavej May 12, 2021
19b8fb8
Remove VSO-1303556 workarounds.
StephanTLavavej May 12, 2021
3200e74
VSO-1307828 was fixed, but let's keep _Get_container().
StephanTLavavej May 12, 2021
5950ef0
VS 2019 16.10 Preview 4.
StephanTLavavej May 19, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem
The STL uses boost-math headers to provide P0226R1 Mathematical Special Functions. We recommend using [vcpkg][] to
acquire this dependency.

1. Install Visual Studio 2019 16.10 Preview 2 or later.
1. Install Visual Studio 2019 16.10 Preview 4 or later.
* We recommend selecting "C++ CMake tools for Windows" in the VS Installer.
This will ensure that you're using supported versions of CMake and Ninja.
* Otherwise, install [CMake][] 3.20 or later, and [Ninja][] 1.10.2 or later.
Expand All @@ -158,7 +158,7 @@ acquire this dependency.

# How To Build With A Native Tools Command Prompt

1. Install Visual Studio 2019 16.10 Preview 2 or later.
1. Install Visual Studio 2019 16.10 Preview 4 or later.
* We recommend selecting "C++ CMake tools for Windows" in the VS Installer.
This will ensure that you're using supported versions of CMake and Ninja.
* Otherwise, install [CMake][] 3.20 or later, and [Ninja][] 1.10.2 or later.
Expand Down Expand Up @@ -234,7 +234,7 @@ C:\Users\username\Desktop>dumpbin /IMPORTS .\example.exe | findstr msvcp
# How To Run The Tests With A Native Tools Command Prompt

1. Follow either [How To Build With A Native Tools Command Prompt][] or [How To Build With The Visual Studio IDE][].
2. Acquire [Python][] 3.9.4 or newer and have it on the `PATH` (or run it directly using its absolute or relative path).
2. Acquire [Python][] 3.9.5 or newer and have it on the `PATH` (or run it directly using its absolute or relative path).
3. Have LLVM's `bin` directory on the `PATH` (so `clang-cl.exe` is available).
* We recommend selecting "C++ Clang tools for Windows" in the VS Installer. This will automatically add LLVM to the
`PATH` of the x86 and x64 Native Tools Command Prompts, and will ensure that you're using a supported version.
Expand Down
10 changes: 9 additions & 1 deletion azure-devops/create-vmss.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ $ImageOffer = 'Windows-10'
$ImageSku = '20h2-ent-g2'

$ProgressActivity = 'Creating Scale Set'
$TotalProgress = 13
$TotalProgress = 14
$CurrentProgress = 1

<#
Expand Down Expand Up @@ -304,6 +304,14 @@ Write-Progress `

Restart-AzVM -ResourceGroupName $ResourceGroupName -Name $ProtoVMName

####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
-Status 'Sleeping after restart' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)

Start-Sleep -Seconds 60

####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ $Workloads = @(
$ReleaseInPath = 'Preview'
$Sku = 'Enterprise'
$VisualStudioBootstrapperUrl = 'https://aka.ms/vs/16/pre/vs_enterprise.exe'
$PythonUrl = 'https://www.python.org/ftp/python/3.9.4/python-3.9.4-amd64.exe'
$PythonUrl = 'https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe'

# https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
$WindowsDriverKitUrl = 'https://go.microsoft.com/fwlink/?linkid=2128854'
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ variables:
buildOutputLocation: 'D:\build'
vcpkgLocation: '$(Build.SourcesDirectory)/vcpkg'

pool: 'StlBuild-2021-04-23'
pool: 'StlBuild-2021-05-18'

stages:
- stage: Code_Format
Expand Down
24 changes: 12 additions & 12 deletions stl/inc/chrono
Original file line number Diff line number Diff line change
Expand Up @@ -2977,8 +2977,8 @@ namespace chrono {
explicit zoned_time(_TimeZonePtr _Tz) noexcept /* strengthened */ : _Zone{_STD move(_Tz)} {}

// clang-format off
template <class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
zoned_time, decltype(_Traits2::locate_zone(string_view{}))>::value,
template <class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{}))>,
int> = 0>
// clang-format on
explicit zoned_time(string_view _Name) : _Zone{_Traits::locate_zone(_Name)} {}
Expand All @@ -2990,8 +2990,8 @@ namespace chrono {
zoned_time(_TimeZonePtr _Tz, const sys_time<_Duration>& _Sys) : _Zone{_STD move(_Tz)}, _Tp{_Sys} {}

// clang-format off
template <class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const sys_time<_Duration>&>::value,
template <class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const sys_time<_Duration>&>,
int> = 0>
// clang-format on
zoned_time(string_view _Name, type_identity_t<const sys_time<_Duration>&> _Sys)
Expand All @@ -3005,8 +3005,8 @@ namespace chrono {
: _Zone{_STD move(_Tz)}, _Tp{_Zone->to_sys(_Local)} {}

// clang-format off
template <class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const local_time<_Duration>&>::value,
template <class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const local_time<_Duration>&>,
int> = 0>
// clang-format on
zoned_time(string_view _Name, type_identity_t<const local_time<_Duration>>& _Local)
Expand All @@ -3021,8 +3021,8 @@ namespace chrono {
: _Zone{_STD move(_Tz)}, _Tp{_Zone->to_sys(_Local, _Choose)} {}

// clang-format off
template <class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const local_time<_Duration>&, choose>::value,
template <class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{})), const local_time<_Duration>&, choose>,
int> = 0>
// clang-format on
zoned_time(string_view _Name, type_identity_t<const local_time<_Duration>&> _Local, choose _Choose)
Expand All @@ -3041,19 +3041,19 @@ namespace chrono {

// clang-format off
template <class _Duration2, class _TimeZonePtr2,
class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{})),
const zoned_time<_Duration2, _TimeZonePtr2>&>::value,
const zoned_time<_Duration2, _TimeZonePtr2>&>,
int> = 0>
// clang-format on
zoned_time(string_view _Name, const zoned_time<_Duration2, _TimeZonePtr2>& _Zt)
: zoned_time{_Traits::locate_zone(_Name), _Zt} {}

// clang-format off
template <class _Duration2, class _TimeZonePtr2,
class _Traits2 = _Traits, enable_if_t<is_constructible< // TRANSITION, VSO-1303556
class _Traits2 = _Traits, enable_if_t<is_constructible_v<
zoned_time, decltype(_Traits2::locate_zone(string_view{})),
const zoned_time<_Duration2, _TimeZonePtr2>&, choose>::value,
const zoned_time<_Duration2, _TimeZonePtr2>&, choose>,
int> = 0>
// clang-format on
zoned_time(string_view _Name, const zoned_time<_Duration2, _TimeZonePtr2>& _Zt, choose _Choose)
Expand Down
12 changes: 6 additions & 6 deletions stl/inc/execution
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ struct _Parallel_choose_min_chunk {
}
}

lock_guard<mutex> _Lck(_Mtx); // TRANSITION, VSO-671180
lock_guard _Lck(_Mtx);
if (_Selected_chunk.load(memory_order_relaxed) == _Chunk) {
_Result = _Local_result;
}
Expand Down Expand Up @@ -481,7 +481,7 @@ struct _Parallel_choose_max_chunk {
}
}

lock_guard<mutex> _Lck(_Mtx); // TRANSITION, VSO-671180
lock_guard _Lck(_Mtx);
if (_Selected_chunk.load(memory_order_relaxed) == _Chunk) {
_Result = _Local_result;
}
Expand Down Expand Up @@ -589,7 +589,7 @@ public:
auto _New_segment = _Segment->_Grow(_Local_b, _Local_t);
_Circular_buffer<_Ty>* _Detached_segment;
{
lock_guard<mutex> _Lck(_Segment_lock); // TRANSITION, VSO-671180
lock_guard _Lck(_Segment_lock);
_Detached_segment = _STD exchange(_Segment, _New_segment);
} // unlock

Expand All @@ -614,7 +614,7 @@ public:

_Circular_buffer<_Ty>* _Stealing_segment;
{
lock_guard<mutex> _Lck(_Segment_lock); // TRANSITION, VSO-671180
lock_guard _Lck(_Segment_lock);
_Stealing_segment = _Segment;
_MT_INCR(_Stealing_segment->_Ref_count);
}
Expand Down Expand Up @@ -750,7 +750,7 @@ struct _Work_stealing_team { // inter-thread communication for threads working o
_Work_stealing_membership<_Ty> _Join_team() noexcept {
size_t _Id;
{
lock_guard<mutex> _Lck(_Available_mutex); // TRANSITION, VSO-671180
lock_guard _Lck(_Available_mutex);
_Id = _Available_queues.top();
_Available_queues.pop();
} // unlock
Expand All @@ -764,7 +764,7 @@ struct _Work_stealing_team { // inter-thread communication for threads working o
}

void _Leave_team(size_t _Id) noexcept {
lock_guard<mutex> _Lck(_Available_mutex); // TRANSITION, VSO-671180
lock_guard _Lck(_Available_mutex);
_Available_queues.push(_Id);
}

Expand Down
2 changes: 1 addition & 1 deletion stl/inc/queue
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public:
_Swap_adl(c, _Right.c);
}

_NODISCARD const _Container& _Get_container() const noexcept { // TRANSITION, VSO-1307828
_NODISCARD const _Container& _Get_container() const noexcept {
return c;
}

Expand Down
2 changes: 1 addition & 1 deletion stl/inc/stack
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public:
_Swap_adl(c, _Right.c);
}

_NODISCARD const _Container& _Get_container() const noexcept { // TRANSITION, VSO-1307828
_NODISCARD const _Container& _Get_container() const noexcept {
return c;
}

Expand Down
8 changes: 4 additions & 4 deletions stl/inc/tuple
Original file line number Diff line number Diff line change
Expand Up @@ -683,10 +683,10 @@ public:
}

#ifdef __cpp_lib_concepts
template <class _First, class... _Other,
class _Ret = common_comparison_category_t<_Synth_three_way_result<_This, _First>, // TRANSITION, DevCom-1344701
_Synth_three_way_result<_Rest, _Other>...>> // (should be a normal or trailing return type)
_NODISCARD constexpr _Ret _Three_way_compare(const tuple<_First, _Other...>& _Right) const {
template <class _First, class... _Other>
_NODISCARD constexpr common_comparison_category_t<_Synth_three_way_result<_This, _First>,
_Synth_three_way_result<_Rest, _Other>...>
_Three_way_compare(const tuple<_First, _Other...>& _Right) const {
if (auto _Result = _Synth_three_way{}(_Myfirst._Val, _Right._Myfirst._Val); _Result != 0) {
return _Result;
}
Expand Down
4 changes: 0 additions & 4 deletions stl/inc/type_traits
Original file line number Diff line number Diff line change
Expand Up @@ -1364,11 +1364,7 @@ template <class _Ty1, class _Ty2, class = void>
struct _Common_reference2A : _Common_reference2B<_Ty1, _Ty2> {};

template <class _Ty1, class _Ty2, class _Result = _Cond_res<_Copy_cv<_Ty1, _Ty2>&, _Copy_cv<_Ty2, _Ty1>&>,
#ifdef __EDG__ // TRANSITION, VSO-948614
enable_if_t<is_lvalue_reference<_Result>::value, int> = 0>
#else // ^^^ workaround / no workaround vvv
enable_if_t<is_lvalue_reference_v<_Result>, int> = 0>
#endif // TRANSITION, VSO-948614
using _LL_common_ref = _Result;

template <class _Ty1, class _Ty2>
Expand Down
27 changes: 6 additions & 21 deletions stl/inc/variant
Original file line number Diff line number Diff line change
Expand Up @@ -1173,18 +1173,11 @@ public:
} else if constexpr (sizeof...(_Types) < 32) {
// Limit the size of variants that use this quadratic code size implementation of swap.
_Variant_raw_visit(index(), _Storage(),
[this, &_That](auto _My_ref)
#ifndef __EDG__ // TRANSITION, VSO-897887
noexcept(conjunction_v<is_nothrow_move_constructible<_Types>..., is_nothrow_swappable<_Types>...>)
#endif // TRANSITION, VSO-897887
{
[this, &_That](auto _My_ref) noexcept(
conjunction_v<is_nothrow_move_constructible<_Types>..., is_nothrow_swappable<_Types>...>) {
_Variant_raw_visit(_That.index(), _That._Storage(),
[this, &_That, _My_ref](auto _That_ref)
#ifndef __EDG__ // TRANSITION, VSO-897887
noexcept(conjunction_v<is_nothrow_move_constructible<_Types>...,
is_nothrow_swappable<_Types>...>)
#endif // TRANSITION, VSO-897887
{
[this, &_That, _My_ref](auto _That_ref) noexcept(
conjunction_v<is_nothrow_move_constructible<_Types>..., is_nothrow_swappable<_Types>...>) {
constexpr size_t _That_idx = decltype(_That_ref)::_Idx;
#ifdef __EDG__ // TRANSITION, VSO-657455
constexpr size_t _My_idx = decltype(_My_ref)::_Idx + 0 * _That_idx;
Expand Down Expand Up @@ -1218,11 +1211,7 @@ public:
} else {
if (this->_Which == _That._Which) {
_Variant_raw_visit(static_cast<size_t>(this->_Which), _That._Storage(),
[this](auto _Ref)
#ifndef __EDG__ // TRANSITION, VSO-897887
noexcept(conjunction_v<is_nothrow_swappable<_Types>...>)
#endif // TRANSITION, VSO-897887
{
[this](auto _Ref) noexcept(conjunction_v<is_nothrow_swappable<_Types>...>) {
constexpr size_t _Idx = decltype(_Ref)::_Idx;
if constexpr (_Idx != variant_npos) {
_Swap_adl(_Variant_raw_get<_Idx>(this->_Storage()), _Ref._Val);
Expand Down Expand Up @@ -1255,11 +1244,7 @@ private:
// steal the contained value from _That
this->_Reset();
_Variant_raw_visit(_That.index(), _That._Storage(),
[this](auto _Ref)
#ifndef __EDG__ // TRANSITION, VSO-897887
noexcept(conjunction_v<is_nothrow_move_constructible<_Types>...>)
#endif // TRANSITION, VSO-897887
{
[this](auto _Ref) noexcept(conjunction_v<is_nothrow_move_constructible<_Types>...>) {
constexpr size_t _Idx = decltype(_Ref)::_Idx;
if constexpr (_Idx != variant_npos) {
this->_Emplace_valueless<_Idx>(_STD move(_Ref._Val));
Expand Down
3 changes: 0 additions & 3 deletions tests/libcxx/expected_results.txt
Original file line number Diff line number Diff line change
Expand Up @@ -432,9 +432,6 @@ std/numerics/c.math/cmath.pass.cpp FAIL
# GH-1596: <algorithm>: unqualified calls to _Adl_verify_range incorrectly cause instantiation
std/algorithms/robust_against_adl.pass.cpp FAIL

# GH-1595: <bit>: bit_ceil(T(-1)) should not be a constant expression
std/numerics/bit/bit.pow.two/bit_ceil.fail.cpp:0 FAIL


# *** CRT BUGS ***
# We're permanently missing aligned_alloc().
Expand Down
3 changes: 0 additions & 3 deletions tests/libcxx/skipped_tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -432,9 +432,6 @@ numerics\c.math\cmath.pass.cpp
# GH-1596: <algorithm>: unqualified calls to _Adl_verify_range incorrectly cause instantiation
algorithms\robust_against_adl.pass.cpp

# GH-1595: <bit>: bit_ceil(T(-1)) should not be a constant expression
numerics\bit\bit.pow.two\bit_ceil.fail.cpp


# *** CRT BUGS ***
# We're permanently missing aligned_alloc().
Expand Down
12 changes: 8 additions & 4 deletions tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -980,11 +980,9 @@ void test_reference_wrapper_invocation() {

assert(i == 10);

#ifndef __EDG__ // TRANSITION, DevCom-939485
const auto noexcept_lambda = []() noexcept {};
const auto noexcept_lambda_ref = ref(noexcept_lambda);
STATIC_ASSERT(noexcept(noexcept_lambda_ref())); // strengthened
#endif // __EDG__

reference_wrapper<int(int)> rw_fxn(quadruple);
assert(rw_fxn(9) == 36);
Expand Down Expand Up @@ -1055,12 +1053,18 @@ constexpr bool test_invoke_constexpr() {
auto p = &thing;

assert(&invoke(&Thing::m_x, *p) == &p->m_x);
// assert(&invoke(&Thing::m_x, ref(*sp)) == &sp->m_x); TRANSITION, P1065R2
#if _HAS_CXX20
#if defined(__clang__) || defined(__EDG__) // TRANSITION, DevCom-1419425 "constexpr PMD emits bogus error C2131"
assert(&invoke(&Thing::m_x, ref(*p)) == &p->m_x);
#endif // ^^^ no workaround ^^^
#endif // _HAS_CXX20
assert(&invoke(&Thing::m_x, p) == &p->m_x);

#ifndef _M_CEE // TRANSITION, DevCom-939490
assert(invoke(&Thing::sum, *p, 3) == 1023);
// assert(invoke(&Thing::sum, ref(*sp), 4) == 1024); TRANSITION, P1065R2
#if _HAS_CXX20
assert(invoke(&Thing::sum, ref(*p), 4) == 1024);
#endif // _HAS_CXX20
assert(invoke(&Thing::sum, p, 5) == 1025);
#endif // _M_CEE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ inline constexpr FloatToCharsTestCase float_to_chars_test_cases[] = {
{6.0898e-39f, chars_format::scientific, "6.0898e-39"},
{0.0010310042f, chars_format::scientific, "1.0310042e-03"},
{2.8823261e17f, chars_format::scientific, "2.882326e+17"},
{0x1.5c87fap-84f, chars_format::scientific, "7.038531e-26"}, // TRANSITION, VSO-629490, should be 7.038531e-26f
{7.038531e-26f, chars_format::scientific, "7.038531e-26"},
{9.2234038e17f, chars_format::scientific, "9.223404e+17"},
{6.7108872e7f, chars_format::scientific, "6.710887e+07"},
{1.0e-44f, chars_format::scientific, "1e-44"},
Expand Down
Loading