Здравствуйте, Bell, Вы писали:
__>>Я теперь понял, что происходит при передаче по ссылке: вызывается конструктор копирования
B>Это заблуждение. Дело не в передаче по ссылке, а в том, как именно создается объект — исключения. А создается он как копия объекта, указанного в throw (здесьАвтор: Bell
Дата: 02.12.03
). Так что ссылка в catch совершенно не при чем.
Копия создаётся именно в catch, например если написать
catch(const CSomeException& exc)
а не
catch(CSomeException& exc)
то никакой копии создаваться не будет и программа отработает нормально (только что проверил в gcc).