В C++ можно объявлять переменные, которые преобразуются в bool, прямо в скобках оператора if
:
if (bool is_enabled = IsEnabled()) assert(is_enabled); while (bool should_contunue = ShouldContinue()) assert(should_continue); if (void* ptr = GetPointer()) assert(ptr != nullptr); if (std::optional<int> value = GetOptional()) assert(value.has_value());
В C++17 ввели инициализаторы непосредственно в операторе:
if (Status status = Foo(); !status.ok()) return status;
Что сильно напоминает Go:
if err:= Foo(); err != nil { return err }