C++ Logo


Advanced search

Re: [SG20] A draft paper to fix the range-based for loop to make it teachable

From: Nicolai Josuttis <nico_at_[hidden]>
Date: Tue, 10 Nov 2020 11:15:58 +0100
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:
> Hi,
> 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.
> Best
> 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
> Books:
> C++: http://cppstdlib.com <http://cppstdlib.com>,
> http://cppstd17.com <http://cppstd17.com>,
> http://tmplbook.com <http://tmplbook.com>, http://cppmove.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]>
> https://lists.isocpp.org/mailman/listinfo.cgi/sg20
> <https://lists.isocpp.org/mailman/listinfo.cgi/sg20>

Nicolai M. Josuttis
+49 (0)531 / 129 88 86
+49 (0)700 / JOSUTTIS
 C++: http://cppstdlib.com, http://cppstd17.com,
      http://tmplbook.com, http://cppmove.com
 SOA: http://soa-in-practice.com

Received on 2020-11-10 04:16:02