Si manifesta quando un oggetto 'std::promise' viene distrutto uscendo dallo scope prima che sia stato impostato un valore con 'set_value()' o un'eccezione con 'set_exception()', lasciando il 'future' orfano.
STD_FUTURE_BROKEN_PROMISE
→
Invocare 'promise.set_value()' o 'promise.set_exception()' più di una volta sulla stessa istanza di 'std::promise' è vietato e scatena questa eccezione.
STD_PROMISE_ALREADY_SATISFIED
→
Il costruttore di 'std::regex' lancia questa eccezione se la stringa del pattern contiene parentesi non bilanciate, sequenze di escape errate o sintassi non conforme alla grammatica regex selezionata (default ECMAScript).
STD_REGEX_ERROR
→
Il runtime invoca 'std::terminate()' arrestando il programma quando un'eccezione lanciata con 'throw' risale l'intero stack di chiamate senza incontrare alcun blocco 'catch' compatibile.
UNCAUGHT_EXCEPTION
→
In C++11 e successivi tutti i distruttori sono implicitamente qualificati come 'noexcept'; sollevare un'eccezione all'interno di un distruttore (specialmente durante lo stack unwinding di un'altra eccezione) porta all'arresto forzato immediato.
EXCEPTION_IN_DESTRUCTOR
→
L'eccezione viene generata quando si tenta di convertire un valore racchiuso in 'std::any' tramite 'std::any_cast<TargetType>(val)' specificando un tipo diverso da quello originariamente memorizzato.
STD_BAD_ANY_CAST
→
Sollevata quando si invoca il metodo '.value()' su un'istanza di 'std::optional' che non contiene alcun valore ('nullopt'); si previene controllando '.has_value()' o usando '.value_or()'.
STD_BAD_OPTIONAL_ACCESS
→
Viene sollevata a runtime quando si tenta di estrarre un tipo con 'std::get<T>(v)' da un 'std::variant' che attualmente contiene un'altra variante; si risolve verificando con 'std::holds_alternative<T>(v)'.
STD_BAD_VARIANT_ACCESS
→