Причин узагалі немає.
Об’єкти винятків живуть у власному просторі пам’яті †, тому вам не доведеться турбуватися про те, щоб вловити винятки, створені у тимчасових виразах.
Все, що ви робите, - це обіцянка, що ви не будете модифікувати об’єкт виключення, але оскільки об’єкти виключення повинні мати незмінний інтерфейс ‡ , то насправді тут немає нічого практичного.
Тим не менш, це може змусити вас почуватись тепло і затишно, коли ви читаєте його - ось як це для мене!
† Вони мають свій власний, спеціальний, локальний стек.
‡ Застереження: Boost.Exception порушує це, щоб робити фанкі речі та додавати деталі винятків, після побудови. Але це хакерство!