Я правильно понял?
Юп.Всегда было разрешено иметь объявление в условии оператора if.Что нового в C ++ 17, так это то, что вы можете иметь инициализатор и условие:
if (int A = 0; ++A == 1);
// ^^^^^^^^^
// new part
Для тех, кто спрашивает, почему это полезная функция, вот пример, который мне нравится из Reddit:
std::map<int, std::string> Map;
// ...
if (auto[it, inserted] = Map.insert(std::pair(10, "10")); inserted)
; // do something with *it.