Well, I would argue that different languages have different syntax (that’s what makes them different languages).

It doesn’t bother me if C++ has different syntax, we are not trying to make all languages inter-compatible.

 

I think it’s a trap to just look at “whatever someone else is doing” and just go with that as opposed to just figuring out what’s actually best for the language.

 

Case in point, many of the cited languages either don’t do control flow in this way, or don’t have a “goto” statement, thus would never have to suffer this problem

 

 

From: Std-Proposals <std-proposals-bounces@lists.isocpp.org> On Behalf Of Sebastian Wittmeier via Std-Proposals
Sent: Thursday, December 19, 2024 12:54 PM
To: std-proposals@lists.isocpp.org
Cc: Sebastian Wittmeier <wittmeier@projectalpha.org>
Subject: Re: [std-proposals] Bringing break/continue with label to C++

 

Scala offers breakable

https://www.scala-lang.org/api/2.13.3/scala/util/control/Breaks.html

 
breakable {
  for (x <- xs) {
    if (done) break()
    f(x)
  }
}
 
based on a customizable control structure
 
 
 
PHP offers a numeric argument
https://www.php.net/manual/en/control-structures.break.php
 
$i = 0;
while (++
$i) {
    switch (
$i) {
        case
5:
            echo
"At 5<br />\n";
            break
1/* Exit only the switch. */
       
case 10:
            echo
"At 10; quitting<br />\n";
            break
2/* Exit the switch and the while. */
       
default:
            break;
    }
}
   All other old and new languages seem to define a label just in front of the control flow instruction. Including sophisticated ones (lots of control structures) like Raku:  https://docs.raku.org/language/control
OUTAHERE: loop ( my $i = 1; True; $i++ ) {   OUTFOR:     for 1,2,3 -> $n {       # exits the for loop before its natural end       last OUTFOR if $n == 2;   }    # exits the infinite loop   last OUTAHERE if $i >= 2; }   So one can call it an industry-standard.