ericniebler / stl2

LaTeX and Markdown source for the Ranges TS/STL2 and associated proposals
88 stars 8 forks source link

OutputIterator is no longer equivalent to WeaklyIncrementable && Writable #496

Open timsong-cpp opened 7 years ago

timsong-cpp commented 7 years ago

https://timsong-cpp.github.io/cppwp/ranges-ts/alg.generate

1. It still uses Callable. That's not a concept anymore.

  1. Also, why doesn't it use OutputIterator? (But the range version does use OutputRange...)
CaseyCarter commented 7 years ago
  1. Obviously these uses of Callable should have been replaced with Invocable during the grand renaming, this was an editorial error that I can (and just did: f880d726555bb24762cf9f9ae607dc60ae4e6814) correct editorially.

  2. N3351 didn't have an OutputIterator concept; it typically used WeaklyIncrementable<I> && Writable<I, T> to constrain output iterators. In this particular instance, note that Iterator<O> && Writable<O, result_of_t<F&()>> WAS equivalent to OutputIterator<O, result_of_t<F&()>> before P0541 added the *i++ = t; requirement to OutputIterator. We need to make a (non-editorial) sweep through the spec finding places like this that don't use OutputIterator because it previously did not matter but now should do so because it does.