Прокачанный switch()

ColumbusUtrigas
ColumbusUtrigas

Традиционно switch() умеет сравнивать только числа, енумы и символы. Хотелось бы стандартизировать сравнение любых типов, имеющих оператор сравнения (к примеру, было бы удобно уметь сравнивать std::string, не используя при этом тонну if-else).

Знаю, что это можно сделать и самому, написав простой враппер, но писать все время врапперы - имхо такое себе.

Реализовать это как синтаксический сахар вокруг тех же пресловутых if-else (для тех типов, где оптимальнее нельзя).

3
рейтинг
2 комментария
Dimitriy Ryazantcev

Сейчас в разработке более generic подход: Pattern Matching

https://github.com/cplusplus/papers/issues/166

Dimitriy Ryazantcev
Dimitriy Ryazantcev

7.2 inspect rather than switch

This proposal introduces a new inspect statement rather than trying to extend the switch statement. [P0095R0] had proposed extending switch and received feedback to “leave switch alone” in Kona 2015.

The following are some of the reasons considered:

— switch allows the case labels to appear anywhere, which hinders the goal of pattern matching in providing structured inspection.

— The fall-through semantics of switch generally results in break being attached to every case, and is known to be error-prone.

— switch is purposely restricted to integrals for guaranteed efficiency. The primary goal of pattern matching in this paper is expressiveness while being at least as efficient as the naively hand-written code.

Dimitriy Ryazantcev
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения