Jul 22, 2014 19:43
В Линкедине, в группе C++, какой-то индус (ага - да - уже смешно) пожаловался что дескать в следующем коде, в блоке catch недоступны локальные переменные функции:
void foo(int x) try
{
int y = 2;
throw 3;
}
catch(int e)
{
x = e;
}
Я уже хотел поржать над глупым индусом, но оказалось что он не настолько уж и неправ: такая запись реально валидна. Хотя индус и мог догадаться что те переменные определены внутри блока, и соответственно, естественно не могут быть доступны в блоке catch: это же очевидно. При чем даже джуниору должно быть очевидно. Но вот накой черт, джуниор лепит такую эзотерику - вопрооос. Так что "индус - такой идус" :)
Ну и что-же по поводу записи. Как пишут люди - она даже используется на практике. Но лично я, ничего подобного ниразу не встречал. Хотя и аутсорсом занимался в том числе. А ведь там всякое может встретится: надо быть готовым, чисто мозгом распарсить любую эзотерическую конструкцию. Да и сам я не думал что обычно-тупой с++-сный парсер (пофиг от какого вендора) - способен проглатить такое: даже в голову не приходила мысль пробовать наворачивать такую конструкцию.
люди человеки,
development,
программизмы,
c++