Я был просто потрясен, что это разрешено:
if( int* x = new int( 20 ) )
{
std::cout << *x << "!\n";
// delete x;
}
else
{
std::cout << *x << "!!!\n";
// delete x;
}
// std:cout << *x; // error - x is not defined in this scope
Итак, разрешено ли это стандартом или просто расширением компилятора?
<суб > P.S. Поскольку было несколько замечаний по этому поводу, пожалуйста, проигнорируйте, что этот пример "плохой" или опасный. Я знаю что. Это первое, что пришло мне в голову, как пример.