Null-coalescing оператор ?? и Null-conditional оператор ?->

x4mmm
x4mmm

Null-coalescing позволяет, например, такую контрукцию

abstract class SomeProlificInterface {public: abstract void SomeSuspiciosCall()}

class AllowedInterface1: SomeProlificInterface {...}

class AllowedInterface2: SomeProlificInterface {...}

class DisallowedInterface1: SomeProlificInterface {...}

class DisallowedInterface2: SomeProlificInterface {...}

 

auto o = AquireSomeProlificInterface();

(dynamic_cast<AllowedInterface1>(o)??dynamic_cast<AllowedInterface2>(o))?->SomeSuspiciosCall();

-9
рейтинг
3 комментария
Antervis
обычно проверка против nullptr обрабатывается как-то иначе, нежели "ничего не делать".
Antervis
x4mmm
Antervis,
1. Замена отсутствуюего значения на значение по умолчанию
2. Вызов события у объёкта при наличии объекта
3. Создание временного объекта при его отсутствии, различные варианты Lazy поведения

Этот proposal из C#, там точно также много лет были аргументы - "null всегда нужно обрабатывать не через nop". Фича появилась и ей все очень довольны.

Да, она нужна не для ООП а для т.н. "языков работы с объектами", когда человек вызывает незнакомое ему API в стиле "пархающей кувалды". Но эта фича существенно упрощает написание программ, исследюущих это API. И не открывает большого количества путей для новых багов.
x4mmm
dix75
Повтор stdcpp.ru/proposals/e20894f1-bacd-4186-8b87-b7b4a42196c5
Нет поиска, совсенм плохо, в Яндексе не могут прикурутить поиск, что такое?
dix75
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).