пʼятниця, 9 березня 2018 р.

Инициализаторы в if С++17

В 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
 }

HyperComments for Blogger

comments powered by HyperComments