C++ Logo

std-proposals

Advanced search

Re: [std-proposals] A draft for modern switch

From: Zhihao Yuan <zy_at_[hidden]>
Date: Thu, 22 May 2025 18:45:28 +0000
On Thursday, May 22nd, 2025 at 10:53 AM, Nikolay Mihaylov via Std-Proposals <std-proposals_at_[hidden]> wrote:

> My 5 cents again :)
>

> I am strongly against modifying switch in this way :)
> C++ is C and C++, is not Javascript or PHP where nobody cares about performance.


Wow, if you believe that C++ must care
about performance, then you may want
to consider supporting a `switch` that
tests strings! What a compiler can do to
optimize a pattern matching that tests
strings but simulates fall-through between
the cases?

--
Zhihao Yuan, ID lichray
The best way to predict the future is to invent it.
_______________________________________________
> 
> This is exactly why match were proposed.
> 
> On Wed, May 21, 2025 at 4:56 PM Jason McKesson via Std-Proposals <std-proposals_at_[hidden]> wrote:
> 
> > On Wed, May 21, 2025 at 3:34 AM Filip via Std-Proposals
> > <std-proposals_at_[hidden]> wrote:
> > >
> > > I agree, it seems like a better idea to have switch in non constexpr context available, to act like a nicer option acting like if else.
> > >
> > > Maybe I’m missing the key functionality of match, but it looks like a different syntax for something that we already have.
> > >
> > > I agree that assignment with match looks like a good idea, why wouldn’t we add that to the switch statement?
> > 
> > Because we're getting pattern matching anyway, which is a superset of
> > what switch can do. There's no point in improving a legacy feature
> > when it is simultaneously being rendered obsolete.
> > 
> > > string b = “hello”;
> > > auto var = switch(b){
> > > case “hi”: { return 42; }
> > > case “hello”: { return 43; }
> > > default: { return 0; } // probably should be mandatory
> > > };
> > 
> > ```
> > b match {
> > "hi" => return 42;
> > "hello" => return 43;
> > _ => return 0;
> > }
> > ```
> > --
> > Std-Proposals mailing list
> > Std-Proposals_at_[hidden]
> > https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals

Received on 2025-05-22 18:45:40