Обьясните как ловятся исключения
От: AndrewJD США  
Дата: 21.10.05 14:11
Оценка:
Привет Всем

Ламерский вопрос
Есть такой код:

class A
{
};

int main(int argc, char* argv[])
{
    try
    {
        throw A();
    }
    catch (const A& a) 
    {
/// (1)
    }
    catch (A a) 
    {
        // (2)
    }
    return 0;
}


В какую ветку согласно стандарту должно пойти управление в 1 или 2?
Я думал, что по первой, так как первая подходящая. Однако VS 7.1 со мной не согласен и вообще отказался этот код компилировать. Comeau online схавал. Кто прав и почему?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re: Обьясните как ловятся исключения
От: MaximE Великобритания  
Дата: 22.10.05 14:09
Оценка: 5 (1)
On Fri, 21 Oct 2005 18:11:28 +0400, AndrewJD <2437@users.rsdn.ru> wrote:

>
> class A
> {
> };
>
> int main(int argc, char* argv[])
> {
>     try
>     {
>         throw A();
>     }
>     catch (const A& a)
>     {
> /// (1)
>     }
>     catch (A a)
>     {
>         // (2)
>     }
>     return 0;
> }
>
>

>
> В какую ветку согласно стандарту должно пойти управление в 1 или 2?
> Я думал, что по первой, так как первая подходящая.

В первый подходящий.

> Однако VS 7.1 со мной не согласен и вообще отказался этот код компилировать.


Он не согласен совсем по другой причине.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/C2313.asp

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 2.0 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.