LINUX.ORG.RU

История изменений

Исправление cvv, (текущая версия) :

Eдинственный реально работающий варинат exception safety, это:

#define throw *((nullptr*)0) = 0;
#define try *((nullptr*)0) = 0;
#define catch *((nullptr*)0) = 0;

Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.

Плюсую. Вот Oна - железо-бетонная реализация исключений для С++.

Исправление cvv, :

Eдинственный реально работающий варинат exception safety, это:

#define throw *((nullptr*)0) = 0;
#define try *((nullptr*)0) = 0;
#define catch *((nullptr*)0) = 0;

Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.

Плюсую. Вот она железо-бетонная реализация исключений для С++.

Исходная версия cvv, :

Eдинственный реально работающий варинат exception safety, это:

#define throw *((nullptr*)0) = 0; #define try *((nullptr*)0) = 0; #define catch *((nullptr*)0) = 0;

Тут, конечно, большой простор для улучшения, чтобы ошибки все-таки из runtime сдвинуть в сторону compile time, но суть, думаю понятна: никогда и ни при каких условиях не бросать и не ловить исключения.

Плюсую. Вот она железо-бетонная реализация исключений для С++.