Interesting, thanks Andrew.  Do you recall and would mind sharing the reasons for its rejection?


On Aug 29, 2019, at 10:21 AM, Andrew Tomazos <> wrote:

I plan to target C++23 with it.

I proposed a similar core language feature in 2016 in P0286:

but the proposal was rejected.

On Fri, Aug 30, 2019 at 2:46 AM Sophia Poirier <> wrote:
Thanks Andrew, that's a great collection of utilities.  Is that a proposal you are working towards submitting?  (I note it has no paper number.)

I do prefer to see it language level as I think it is intuitive as I have suggested, plus it is such a basic and fundamental logical operation (and allows serving those who cannot use the STL), however I do recognize there are fewer hurdles to landing library features.

- Sophia

On Aug 28, 2019, at 5:23 AM, Andrew Tomazos <> wrote:

On Wed, Aug 28, 2019 at 3:42 AM Sophia Poirier via Std-Proposals <> wrote:
On Aug 27, 2019, at 10:26 AM, Barry Revzin <> wrote:

On Tue, Aug 27, 2019, 12:02 PM Sophia Poirier via Std-Proposals <> wrote:
Thanks, yes I have that as an alternate example in my longer notes.  My understanding is that it still suffers from the type-matching problem as traditional for loops.  Your example of:

for (const auto i : std::views::iota(0, count))

only works when count is an int.  Otherwise, if for example count is uint32_t, it would need to be:

for (const auto i : std::views::iota(uint32_t{0}, count)
for (const auto i : std::views::iota(0u, count))
for (const auto i : std::views::iota<uint32_t>(0, count))
for (const auto i : std::views::iota<decltype(count)>(0, count))

or something along those lines, or you will get template instantiation failure compiler error.  I think that if std::views::iota had a constructor overload that was simply the second argument (count) with implicit zero start, then it would be a good option.  However I believe there is interest to reserve such an overload perhaps for infinite ranges?


This is true. But we can write a helper function to get the correct type of 0 so we don't need the ugliness at point of use:

template <std::integral T>
auto upto(T n) {
    return views::iota(T{0}, n);

We end up with:

for (const auto i : upto(count))


This could be the basis of an alternate library proposal, true.

- Sophia