Возьмите следующий код;
void DoThrow( const std::exception& e )
{
throw e;
}
int main( int nArgs, char* args[] )
{
std::exception e;
try
{
DoThrow( e );
}
catch( std::exception& e )
{
// const exception ref is caught
}
return 0;
}
Я пытаюсь модифицировать корректность констант в моем проекте и случайно создал описанную выше ситуацию. В настоящее время в Dev Studio блок catch ДЕЙСТВИТЕЛЬНО перехватывает исключение, несмотря на то, что он выбрасывается как const &, но воспринимается как неконстантный &.
Вопрос - Должен ли он?: -)