Il libro C++ Concurrency in Action da Anthony Williams afferma in 4.2.4 Risparmio un'eccezione per il futuro che è possibile memorizzare un'eccezione direttamente senza lanciare tramite std::copy_exception
. Tuttavia, non riesco a trovare l'intestazione della libreria standard in cui è definito std::copy_exception
. Dove posso trovarlo?Dove è definito std :: copy_exception?
risposta
tl; dr: std::copy_exception
è stato rinominato in std::make_exception_ptr
<exception>
per la finale di serie C++ 11.
la commissione ha deciso che il nome copy_exception
(probabilmente copiato nello standard da boost::copy_exception
) era fuorviante per i seguenti motivi.
La funzione copy_exception
restituisce un exception_ptr
a una copia della sua tesi, come se
template <class E>
exception_ptr copy_exception(E e) {
try {
throw e;
} catch (...) {
return current_exception();
}
}
Quando viene chiamato con un exception_ptr
come argomento, la funzione sarebbero tornati un'altra exception_ptr
che punta a una copia del exception_ptr
data come argomento , invece di puntare a ciò a cui punta l'argomento exception_ptr
. Poiché il nome copy_exception
era fuorviante per questo caso, la funzione è stata rinominata in std::make_exception_ptr
per lo standard finale C++ 11. Vedere lo C++ Standard Library Defect Report 1130 per dettagli e discussioni su questo problema.
La funzione std::make_exception_ptr
è definita in <exception>
.
- 1. getActivity() dove è definito?
- 2. dove è definito Enum.values ()?
- 3. Dove è definito __dso_handle?
- 4. Dove è definito "id" letterale?
- 5. Determina dove è definito un alias UNIX
- 6. Dove è definito instance_eval in Ruby 1.9.2?
- 7. Dove C++ size_t è definito in linux
- 8. Dove è definito l'operatore == nella classe "oggetto"?
- 9. Perché `std :: initializer_list` non è definito come un tipo letterale?
- 10. È questo l'uso del comportamento non definito di std :: array?
- 11. dove mettere usando namespace std;
- 12. Dove è definito il filtro in TFS 2012?
- 13. Dove è definito jQuery.ajax nel codice sorgente di jQuery?
- 14. in esecuzione 2.4 configurazioni di logback, dove è definito $ {application.home}?
- 15. Vedere dove è definito un simbolo in irb
- 16. In Emacs Lisp, come trovare dove è definito il simbolo
- 17. Dove è definito il banner di avvio Python?
- 18. vim/macvim: individuare dove è definito un metodo/simbolo
- 19. Perché std :: hash non è stato definito per std :: weak_ptr in C++ 0x?
- 20. Uso contemporaneo di std :: regex, comportamento definito?
- 21. std :: map operator [] - comportamento non definito?
- 22. Che cos'è NSConcreteData e dove viene definito?
- 23. (Dove) Clang documenta il comportamento definito dall'implementazione?
- 24. process.env.NODE_ENV non è definito
- 25. È definito?
- 26. "document.formName" non è definito?
- 27. Dove è stdbool.h?
- 28. servletcontext.addservlet non è definito
- 29. dove è context.Entry()?
- 30. Is std :: is_unsigned <bool> :: valore ben definito?