C++ Logo

std-proposals

Advanced search

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

From: Jeremy Rifkin <rifkin.jer_at_[hidden]>
Date: Thu, 22 May 2025 15:07:40 -0500
> Wow, if you believe that C++ must care
> about performance, then you may want
> to consider supporting a switch that
> tests strings!

There is no optimization that is unique to switch. Compilers optimize
if-else chains just fine.

Jeremy


On Thu, May 22, 2025 at 1:45 PM Zhihao Yuan via Std-Proposals <
std-proposals_at_[hidden]> wrote:

> 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
>>
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>

Received on 2025-05-22 20:07:57