Skip to content

Commit

Permalink
<ranges>: Temporarily disable join_view for non-forward_ranges,…
Browse files Browse the repository at this point in the history
… pending resolution of LWG-3698 (microsoft#2727)

Co-authored-by: Casey Carter <[email protected]>
Co-authored-by: timsong-cpp <[email protected]>
  • Loading branch information
3 people authored May 24, 2022
1 parent 4761b6d commit 2966813
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
13 changes: 13 additions & 0 deletions stl/inc/ranges
Original file line number Diff line number Diff line change
Expand Up @@ -3068,6 +3068,19 @@ namespace ranges {
requires view<_Vw> && input_range<range_reference_t<_Vw>>
class join_view : public _Join_view_base<_Vw> {
// clang-format on

#ifndef _USE_JOIN_VIEW_INPUT_RANGE
static_assert(forward_range<_Vw>,
"Due to a design flaw, join_view can misbehave "
"with some input-only ranges (see https://wg21.link/lwg3698). "
"We believe that WG21 will be unable to fix this problem without breaking ABI. "
"To minimize breakage when a fix is implemented, "
"we are temporarily disabling potentially problematic cases. "
"You can define _USE_JOIN_VIEW_INPUT_RANGE to suppress this diagnostic, "
"but be aware that you will almost certainly need to recompile "
"when we release a fix.");
#endif // _USE_JOIN_VIEW_INPUT_RANGE

private:
template <bool _Const>
using _InnerRng = range_reference_t<_Maybe_const<_Const, _Vw>>;
Expand Down
2 changes: 1 addition & 1 deletion tests/libcxx/usual_matrix.lst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
RUNALL_INCLUDE ..\universal_prefix.lst
RUNALL_CROSSLIST
# TRANSITION, LLVM-53957: _SILENCE_ALL_CXX23_DEPRECATION_WARNINGS belongs to llvm-project/libcxx/test/support/msvc_stdlib_force_include.h
PM_CL="/EHsc /MTd /std:c++latest /permissive- /FImsvc_stdlib_force_include.h /wd4643 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /D_SILENCE_ALL_CXX23_DEPRECATION_WARNINGS"
PM_CL="/EHsc /MTd /std:c++latest /permissive- /FImsvc_stdlib_force_include.h /wd4643 /D_STL_CALL_ABORT_INSTEAD_OF_INVALID_PARAMETER /D_SILENCE_ALL_CXX23_DEPRECATION_WARNINGS /D_USE_JOIN_VIEW_INPUT_RANGE"
RUNALL_CROSSLIST
PM_CL="/analyze:autolog- /Zc:preprocessor"
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing"
2 changes: 2 additions & 0 deletions tests/std/tests/P0896R4_views_join/test.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#define _USE_JOIN_VIEW_INPUT_RANGE

#include <algorithm>
#include <array>
#include <cassert>
Expand Down

0 comments on commit 2966813

Please sign in to comment.