Non c'è fondamentalmente alcun motivo.
Gli oggetti eccezione risiedono nel proprio spazio di memoria † quindi non devi preoccuparti di rilevare le eccezioni create nelle espressioni temporanee.
Tutto quello che stai facendo è promettente che non sarà possibile modificare l'oggetto eccezione, ma in quanto oggetti eccezione dovrebbe avere un'interfaccia immutabili ‡ , non c'è davvero nulla di pratico qui.
Tuttavia, potrebbe farti sentire caldo e accogliente quando lo leggi - è così per me!
† Hanno il loro stack speciale, locale per i thread.
‡ Disclaimer: Boost.Exception lo interrompe per fare cose funky e aggiungere dettagli sulle eccezioni, dopo la costruzione. Ma questo è hackery!