forked from lwg/issues
-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Automatic update from GitHub Actions workflow
- Loading branch information
github-actions
committed
Feb 10, 2024
1 parent
add76e0
commit 2667535
Showing
25 changed files
with
515 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="utf-8"> | ||
<title>Issue 4053: Unary call to std::views::repeat does not decay the argument</title> | ||
<style> | ||
p {text-align:justify} | ||
li {text-align:justify} | ||
pre code.backtick::before { content: "`" } | ||
pre code.backtick::after { content: "`" } | ||
blockquote.note | ||
{ | ||
background-color:#E0E0E0; | ||
padding-left: 15px; | ||
padding-right: 15px; | ||
padding-top: 1px; | ||
padding-bottom: 1px; | ||
} | ||
ins {background-color:#A0FFA0} | ||
del {background-color:#FFA0A0} | ||
table.issues-index { border: 1px solid; border-collapse: collapse; } | ||
table.issues-index th { text-align: center; padding: 4px; border: 1px solid; } | ||
table.issues-index td { padding: 4px; border: 1px solid; } | ||
table.issues-index td:nth-child(1) { text-align: right; } | ||
table.issues-index td:nth-child(2) { text-align: left; } | ||
table.issues-index td:nth-child(3) { text-align: left; } | ||
table.issues-index td:nth-child(4) { text-align: left; } | ||
table.issues-index td:nth-child(5) { text-align: center; } | ||
table.issues-index td:nth-child(6) { text-align: center; } | ||
table.issues-index td:nth-child(7) { text-align: left; } | ||
table.issues-index td:nth-child(5) span.no-pr { color: red; } | ||
@media (prefers-color-scheme: dark) { | ||
html { | ||
color: #ddd; | ||
background-color: black; | ||
} | ||
ins { | ||
background-color: #225522 | ||
} | ||
del { | ||
background-color: #662222 | ||
} | ||
a { | ||
color: #6af | ||
} | ||
a:visited { | ||
color: #6af | ||
} | ||
blockquote.note | ||
{ | ||
background-color: rgba(255, 255, 255, .10) | ||
} | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<hr> | ||
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#New">New</a> status.</em></p> | ||
<h3 id="4053"><a href="lwg-active.html#4053">4053</a>. Unary call to <code>std::views::repeat</code> does not decay the argument</h3> | ||
<p><b>Section:</b> 26.6.5.2 <a href="https://wg21.link/range.repeat.view">[range.repeat.view]</a> <b>Status:</b> <a href="lwg-active.html#New">New</a> | ||
<b>Submitter:</b> Jiang An <b>Opened:</b> 2024-02-05 <b>Last modified:</b> 2024-02-10</p> | ||
<p><b>Priority: </b>Not Prioritized | ||
</p> | ||
<p><b>View other</b> <a href="lwg-index-open.html#range.repeat.view">active issues</a> in [range.repeat.view].</p> | ||
<p><b>View all other</b> <a href="lwg-index.html#range.repeat.view">issues</a> in [range.repeat.view].</p> | ||
<p><b>View all issues with</b> <a href="lwg-status.html#New">New</a> status.</p> | ||
<p><b>Discussion:</b></p> | ||
<p> | ||
Currently, a binary call to <code>std::views::repeat</code> decay the arguments due to the deduction guide, | ||
but a unary call doesn't, which is inconsistent. | ||
<p/> | ||
For example: | ||
</p> | ||
<blockquote><pre> | ||
#include <concepts> | ||
#include <ranges> | ||
|
||
using RPV = std::ranges::repeat_view<const char*>; | ||
|
||
static_assert(std::same_as<decltype(std::views::repeat("foo", std::unreachable_sentinel)), RPV>); // OK | ||
static_assert(std::same_as<decltype(std::views::repeat(+"foo", std::unreachable_sentinel)), RPV>); // OK | ||
static_assert(std::same_as<decltype(std::views::repeat("foo")), RPV>); // <span style="color:red;font-weight:bolder">ill-formed</span> | ||
static_assert(std::same_as<decltype(std::views::repeat(+"foo")), RPV>); // OK | ||
</pre></blockquote> | ||
<p> | ||
Presumably we should extend the deduction guide of <code>std::ranges::repeat_view</code> to cover the unary cases. | ||
</p> | ||
|
||
|
||
<p id="res-4053"><b>Proposed resolution:</b></p> | ||
<p> | ||
This wording is relative to <a href="https://wg21.link/N4971" title=" Working Draft, Programming Languages — C++">N4971</a>. | ||
</p> | ||
|
||
<ol> | ||
<li><p>Modify 26.6.5.2 <a href="https://wg21.link/range.repeat.view">[range.repeat.view]</a>, class template <code>repeat_view</code> synopsis, as indicated:</p> | ||
|
||
<blockquote class="note"> | ||
<p> | ||
[<i>Drafting note:</i> The proposed wording has been suggested by Casey Carter, see | ||
<a href="https://github.com/microsoft/STL/issues/3576">microsoft/STL#3576</a>] | ||
</p> | ||
</blockquote> | ||
|
||
<blockquote> | ||
<pre> | ||
namespace std::ranges { | ||
[…] | ||
|
||
template<class T, class Bound <ins>= unreachable_sentinel_t</ins>> | ||
repeat_view(T, Bound <ins>= Bound()</ins>) -> repeat_view<T, Bound>; | ||
} | ||
</pre> | ||
</blockquote> | ||
</li> | ||
</ol> | ||
|
||
|
||
|
||
|
||
|
||
</body> | ||
</html> |
Oops, something went wrong.