Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Writable should work with rvalues #387

Closed
CaseyCarter opened this issue Mar 15, 2017 · 1 comment
Closed

Writable should work with rvalues #387

CaseyCarter opened this issue Mar 15, 2017 · 1 comment

Comments

@CaseyCarter
Copy link
Collaborator

CaseyCarter commented Mar 15, 2017

During LWG Kona review of D0547R1. Writable is defined therein as:

template <class Out, class T>
concept bool Writable() {
  return requires(Out& o, T&& t) {
    *o = std::forward<T>(t);
  };
}

The concept only requires writability for lvalues, but it seems reasonable to require that writability is oblivious to value category.

Proposed Resolution

Accept the wording in P0547R1.

@ericniebler
Copy link
Owner

ericniebler commented Mar 15, 2017

SUPERSEDED (Well, not really: this wording was incorporated into P0547R1)

Wording relative to D0547R1. Change the definition of the concept Writable in [iterators.writable] as follows:

 template <class Out, class T>
 concept bool Writable() {
-  return requires(Out& o, T&& t) {
-    *o = std::forward<T>(t);
+  return requires(Out& o1, Out&& o2, T&& t) {
+    *o1 = std::forward<T>(t);
+    *std::forward<Out>(o2) = std::forward<T>(t);
   };
 }

We need to combine this resolution with the one from #381.

ericniebler added a commit to ericniebler/range-v3 that referenced this issue Jul 1, 2017
ericniebler added a commit to ericniebler/range-v3 that referenced this issue Jul 2, 2017
rvalues should also be tested for writability, refs ericniebler/stl2#387
apmccartney added a commit to njoy/range-v3-adapter that referenced this issue Jul 4, 2017
fb8ce6c View interface at (#689)
7a3ea18 Merge pull request #687 from ericniebler/rvalue-writables
779e98d rvalues should also be tested for writability, refs ericniebler/stl2#387
dd7fd44 latest docs
cb42d1c Merge pull request #679 from CaseyCarter/relax_view
53bb133 Review comment tweaks: * Don't store sentinels for ranges with const end() * Rename any_sentinel_interface to the slightly better fully_erased_view * consistently order public before private
c3ddc64 Merge pull request #683 from CaseyCarter/issue_682
55902f4 control use of <thread> with the RANGES_CXX_<feature> system
c8eebb9 Implement distinct any_view functionality  for input views
11fb1f0 Allow move-only single-pass Views
487f9d3 Merge pull request #678 from ericniebler/conan-fixes
5b06fd8 Merge pull request #676 from ericniebler/convert_to
2eea2ab try to get conan working again
2ed2d52 ranges::convert_to only requires explicit convertibility, fixes #675
30a4dc8 update README with history notes for 0.2.6, change CMakeLists to remind me to update history when updadting version
8f378cc Merge branch 'master' of github.com:ericniebler/range-v3
3a074ed Merge pull request #674 from CaseyCarter/optional
dc672ec Merge pull request #674 from CaseyCarter/optional
900e381 Implement optional per C++17 + P0602 ...because I love implementing optional over and  over.
136b6ba Merge pull request #672 from CaseyCarter/generator
404ec49 Merge pull request #673 from CaseyCarter/headers_ci_fix
a84f175 Oops - .travis.yml reverses the sense of RANGE_V3_NO_HEADER_CHECK
d2bd910 Implement coroutine generator support
6eac75d Merge pull request #670 from CaseyCarter/bugs_bugs_bugs
4498ffa Batch of bugfixes
6dba64d Merge pull request #669 from ericniebler/optional-references
dcf1f6d fix semiregular and optional over references
9ed8a4e Merge pull request #666 from CaseyCarter/depr_std_iterator
9f990c4 Don't use std::iterator; it's deprecated in C++17

git-subtree-dir: src
git-subtree-split: fb8ce6cb9fbaef5f0883796b7543f9d4e8b56e82
@CaseyCarter CaseyCarter added ready and removed open labels Jul 10, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
CaseyCarter added a commit that referenced this issue Jul 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants