Raw loops are out of fashion in one or two of the many programming paradigms in C++. That does not mean they are out of fashion in C++ as a whole, just in a couple of sub-communities. As soon as it is realised that the functional approach is just another type of hammer that isn't suited to every nail, the mentality of purism will fade away like it always does.

Nonetheless, I see little utility in a do-for loop, and I too would like to see a compelling, real world example. The ones given so far are neither.


On Fri, 27 Dec 2019, 11:31 Михаил Найденов via Std-Proposals, <std-proposals@lists.isocpp.org> wrote:
Note that raw loops are out of fashion right now. Also, there are arguably too many iteration statements already, considering all can be expressed with one or two of the existing ones.
Can you give some compelling examples.

On Fri, Dec 27, 2019 at 1:04 PM Menashe Rosemberg via Std-Proposals <std-proposals@lists.isocpp.org> wrote:
Hi,

The loops we have in c++ are loop while, for and do...while. How they work is pretty know, but I will describe them shortly (in their general use) to better demonstrate my proposal.

1. while:
step1: Evaluate condition. Continue to step2 if the condition is true
step2: Execute statements
step3:  return to step1

2. do:
step1: Execute statements
step2: Evaluate condition. Return to srep1 if the condition is true

3 for:
step1: create a counter
step2: Evaluate condition. Continue to step3 if the condition is true
step3: Execute statements
step4: Execute an mathematics operation (with the counter) and return to step2

What I see is we have a lack of one more that may help to make the c++ language more robust and elegant and that is a union of loop do and for to form a 'dofor' loop. It may have the same syntax of for loop but the condition is evaluated in the end not in the start of loop as do loop does.

dofor loop:
step1: create a counter
step2: execute statements
step3: Execute a mathematics operation (with the counter)
step4: return to step2 if condition is true

The syntax could be similar to for like that:

dofor ( <variable declaration>; <mathematics operation>; <condition>) {
    statements...
}

Also the step3 and step4 may be inlined on the assemble level and make this loop very efficient.

Best regards,
TheArquitect
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals