đây:chức năng 'hợp lệ' std :: là gì?
http://en.cppreference.com/w/cpp/utility/functional/function
operator bool
được mô tả: "Kiểm tra xem đối tượng có thể được gọi là lưu trữ có giá trị".
Có lẽ mặc định được xây dựng std::function
không hợp lệ nhưng đây có phải là trường hợp duy nhất không?
Ngoài ra, nó kiểm tra xem nó có hợp lệ không?
Trường hợp trong đó operator()
tăng std::bad_function_call
chính xác trường hợp đối tượng không hợp lệ?
OK, vì vậy kiểm tra tính hợp lệ chỉ là kiểm tra kiểu và gọi hàm dựng sẵn 'std :: function' chính xác là trường hợp' std :: bad_function_call' được nâng lên, yup? – dpj
@ user710408: Tôi không biết ý bạn là gì "kiểm tra tính hợp lệ chỉ là kiểm tra kiểu". Hiệu lực (bây giờ giả định định nghĩa "có một mục tiêu") được xác định tại thời gian chạy, kiểm tra kiểu xảy ra tại thời gian biên dịch. Và cuộc gọi chức năng xấu xảy ra bất cứ khi nào hàm không hợp lệ (không có mục tiêu), là từ việc xây dựng mặc định hoặc được gán rõ ràng 'nullptr'. – GManNickG
Tôi không nghĩ rằng tôi biết những gì tôi có nghĩa là một trong hai! Cảm ơn :) – dpj