Добавить синтаксический сахар: тернарный оператор сравнения.

Falen
Falen

Пример:

вместо 

if (0 < i && i < 100)

писать

if (0 < i < 100)

1
рейтинг
7 комментариев
Andrey

Вы же понимаете, что 0 < i < 100 это уже компилирующий код? Вы предлагаете поменять его смысл.

Andrey
Falen

Andrey, а вы считает текущий смысл - нормальный в большинстве случаев ?

Давайте придумаем аналог, но он был бы очень полезен.

Falen
Обновлено 
Andrey

Falen, есть случаи, когда текущий смысл "нормальный": http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0893r1.html#WhichExprs. Все уже придумано до нас.

Andrey
Андрей Бурмагин

Andrey, может тогда просто добавить в стандартную библиотеку функцию std::in_range(), принимающую три числовых параметра и возвращающую булево значение?

Андрей Бурмагин
Обновлено 
Andrey

Андрей Бурмагин, мое мнение, что от такой функции хуже не будет, но и пользы большой в добавлении таких мелочей в стандарт я не вижу. Хотя прецедент уже есть -- clamp.

Andrey
Андрей Попандопуло

Андрей Бурмагин, подобная функция не учтёт inclusive и exclusive использования границ сравнения. 

Андрей Попандопуло
Андрей Попандопуло

Это действительно было неприятно, если приходилось многократно сравнивать результат некого вызова, ранее до появления конструкции if с инициализацией. И тогда, возможно, был смысл в подобной конструкции. Однако, теперь, на мой взгляд, в этом мало смысла. Например, код, приведённый ниже, даже выглядит по смыслу вполне наглядно и не плодит лишних переменных, нужных лишь для сравнения:

if (auto &&val {calc()}; 0 < val && val < 100) ... 
Андрей Попандопуло
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения