Sách C++ Concurrency in Action bởi Anthony Williams nêu rõ trong 4.2.4 Lưu ngoại lệ cho trong tương lai mà có thể lưu trữ ngoại lệ trực tiếp mà không cần sử dụng std::copy_exception
. Tuy nhiên tôi dường như không thể tìm thấy tiêu đề thư viện chuẩn, nơi mà std::copy_exception
được xác định. Tôi có thể tìm thấy nó ở đâu?Đâu là std :: copy_exception được định nghĩa?
Trả lời
tl; dr: std::copy_exception
được đổi tên thành std::make_exception_ptr
trong <exception>
cho tiêu chuẩn C++ 11 cuối cùng.
Ủy ban quyết định rằng tên copy_exception
(có thể sao chép vào tiêu chuẩn từ boost::copy_exception
) đã gây hiểu lầm vì những lý do sau đây.
Chức năng copy_exception
trả về một exception_ptr
để một bản sao của đối số của nó, như thể
template <class E>
exception_ptr copy_exception(E e) {
try {
throw e;
} catch (...) {
return current_exception();
}
}
Khi được gọi với một exception_ptr
như là đối số, chức năng sẽ quay trở lại một exception_ptr
trỏ đến một bản sao của exception_ptr
cho là lập luận , thay vì trỏ đến điểm đối số exception_ptr
. Vì tên copy_exception
gây hiểu lầm cho trường hợp này, hàm đã được đổi tên thành std::make_exception_ptr
cho tiêu chuẩn C++ 11 cuối cùng. Xem C++ Standard Library Defect Report 1130 để biết chi tiết và thảo luận về vấn đề này.
Chức năng std::make_exception_ptr
được xác định trong <exception>
.
- 1. NSConcreteData là gì và nó được định nghĩa ở đâu?
- 2. Ở đâu là C++ size_t được định nghĩa trong linux
- 3. đâu là định nghĩa về môi trường bên ngoài?
- 4. Toán tử Haskell (. :) được định nghĩa ở đâu?
- 5. Từ khóa được định nghĩa trong Ruby ở đâu?
- 6. "Dao cạo Hutton" đầu tiên được định nghĩa ở đâu?
- 7. $ {body_statement} được định nghĩa ở đâu trong Eclipse
- 8. jQuery.ajax được định nghĩa trong mã nguồn jQuery ở đâu?
- 9. `_softmax_cross_entropy_with_logits` được định nghĩa trong chuỗi lưu lượng ở đâu?
- 10. Trong C++ 11 là sqrt được định nghĩa là constexpr?
- 11. Tại sao không phải `std :: initializer_list` được định nghĩa là một loại chữ?
- 12. Đâu là không gian tên được xác định?
- 13. Định nghĩa chữ "id" ở đâu?
- 14. Định nghĩa `struct ap_conf_vector_t` ở đâu?
- 15. Tại sao std :: hash không được định nghĩa cho std :: weak_ptr trong C++ 0x?
- 16. Trong Ruby có cách nào để biết được phương thức được định nghĩa ở đâu?
- 17. Macro DEBUG được xác định ở đâu?
- 18. std: numeric_limits <double> :: định nghĩa epsilon
- 19. DBSet không chứa một định nghĩa cho đâu
- 20. Nên sử dụng "std :: valarray" ở đâu?
- 21. STLPORT: Không gian tên std {} có nghĩa là gì?
- 22. Cách ghi đè std :: hash cho một enum được định nghĩa bên trong một lớp?
- 23. Tại sao System.Version trong .NET được định nghĩa là Major.Minor.Build.Revision?
- 24. Không đậu có tên là 'transactionManager' được định nghĩa
- 25. Tại sao INET6_ADDRSTRLEN được định nghĩa là 46 trong C?
- 26. Thất bại biên dịch Intellij: "đã được định nghĩa là"
- 27. gulp: chức năng gọi lại nhiệm vụ gulp được định nghĩa ở đâu?
- 28. Chuỗi hàm tạo (int, int, char []) được định nghĩa ở đâu?
- 29. ko không được định nghĩa với requirejs
- 30. Làm thế nào để tìm ra một hàm được định nghĩa ở đâu?