Date: Wed, 28 Aug 2019 22:23:07 +1000
See:
https://docs.google.com/document/d/1gBdBualdIU1bpgW_El4GT-p0he9Yr7D52xmLmHes5Qo/edit?usp=sharing
On Wed, Aug 28, 2019 at 3:42 AM Sophia Poirier via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> On Aug 27, 2019, at 10:26 AM, Barry Revzin <barry.revzin_at_[hidden]> wrote:
>
> On Tue, Aug 27, 2019, 12:02 PM Sophia Poirier via Std-Proposals <
> std-proposals_at_[hidden]> 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)
>> or:
>> for (const auto i : std::views::iota(0u, count))
>> or:
>> for (const auto i : std::views::iota<uint32_t>(0, count))
>> or:
>> 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?
>>
>> thanks,
>> Sophia
>>
>
> 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))
>
> Barry
>
>>
> This could be the basis of an alternate library proposal, true.
>
> - Sophia
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
https://docs.google.com/document/d/1gBdBualdIU1bpgW_El4GT-p0he9Yr7D52xmLmHes5Qo/edit?usp=sharing
On Wed, Aug 28, 2019 at 3:42 AM Sophia Poirier via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> On Aug 27, 2019, at 10:26 AM, Barry Revzin <barry.revzin_at_[hidden]> wrote:
>
> On Tue, Aug 27, 2019, 12:02 PM Sophia Poirier via Std-Proposals <
> std-proposals_at_[hidden]> 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)
>> or:
>> for (const auto i : std::views::iota(0u, count))
>> or:
>> for (const auto i : std::views::iota<uint32_t>(0, count))
>> or:
>> 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?
>>
>> thanks,
>> Sophia
>>
>
> 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))
>
> Barry
>
>>
> This could be the basis of an alternate library proposal, true.
>
> - Sophia
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Received on 2019-08-28 07:25:24