Subject: Re: A draft paper to fix the range-based for loop to make it teachable
From: Nicolai Josuttis (nico_at_[hidden])
Date: 2020-11-10 04:15:58
Thanks for the feedback.
Am 10.11.2020 um 10:41 schrieb Yehezkel Bernat:
> I haven't read the paper yet (answering from my phone), but I heard you
> mentioning the problem and your suggested solution for it before (I
> think it was in a keynote of a conference or maybe in cppcast episode,
> or both). So I'm sorry if your paper already discussing everything I'm
> saying below. I promise to read it through later :)
> 1. I don't think this was discussed before. Thanks for bringing this up.
> 2. I agree this is an issue, and even range-based for loop with
> initializer doesn't fully solve it as we still have to be careful when
> to use the initializer and what part of the expression should be there.
They don't solve it at all,
because this is not fixing the problem but a workaround.
> 3. IMHO, the best and simplest solution is to use std::ranges::for_each,
> because it holds the temporary till the end of the loop due to the
> function call semantics.
IMO, this is also not a solution.
This is also a workaround (I also have to teach after explaining the
problem), which requires a lot of other explanations.
> On Tue, Nov 10, 2020, 11:25 AM Nicolai Josuttis via SG20
> <sg20_at_[hidden] <mailto:sg20_at_[hidden]>> wrote:
> for years, I have significant problems to teach the range-based for
> loop, because of the bug that it has undefined behavior when iterating
> over a reference to a temporary.
> Thus, I
> - either have to tell beginners significant constraints in using it
> - or have to teach all the details why it is broken
> Â including references, lifetime extension, universal references
> Attached is a draft paper to fix the problem.
> I welcome all feedback and if you want to be a co-author
> (the more support the paper has the better).
> Please also tell me if you have yourself significant teaching problems
> there or interesting war stories about the problem.
> There is a surprising number of people who thinks this is not a problem
> at all.
> May be SG20 can support the paper as a whole,
> because IMO we really have to heal C++ to make it teachable again.
> Â Nico
> Note: So far I was not a member of this email list;
> so forgive me if this was discussed before.
> Nicolai M. Josuttis
> www.josuttis.de <http://www.josuttis.de>
> +49 (0)531 / 129 88 86
> +49 (0)700 / JOSUTTIS
> Â C++: http://cppstdlib.com <http://cppstdlib.com>,
> http://cppstd17.com <http://cppstd17.com>,
> Â Â Â http://tmplbook.com <http://tmplbook.com>, http://cppmove.com
> Â SOA: http://soa-in-practice.com <http://soa-in-practice.com>
> SG20 mailing list
> SG20_at_[hidden] <mailto:SG20_at_[hidden]>
-- Nicolai M. Josuttis www.josuttis.de +49 (0)531 / 129 88 86 +49 (0)700 / JOSUTTIS Books: C++: http://cppstdlib.com, http://cppstd17.com, http://tmplbook.com, http://cppmove.com SOA: http://soa-in-practice.com
SG20 list run by email@example.com
Older Archives on Google Groups