Có thể áp dụng sửa đổi noexcept
cho biểu thức lambda không? Nếu vậy, làm thế nào?Sử dụng noexcept làm bộ sửa đổi lambda hoặc ràng buộc tham số
Có thể hạn chế noexcept
đối số chức năng không? Ví dụ, một cái gì đó giống như trong đoạn mã sau, trong đó ý nghĩa là hàm gọi lại phải là noexcept
?
//probably not valid code - I'm just trying to express the idea
void f_async(std::function<void (int) noexcept> callback) noexcept
{
...
}
này có thể gần được thực hiện với đoạn mã sau, nhưng tôi đang tự hỏi nếu có một cách để sử dụng một cái gì đó giống như sự thay thế ở trên.
void f_async(std::function<void (int)> callback)
noexcept(callback(std::declval<int>()))
{
...
}
Vấn đề ở đây tất nhiên là f_async
có thể noexcept(false)
nếu gọi lại là noexcept(false)
- Tôi muốn làm một tuyên bố mạnh rằng f_async
là luônnoexcept
, có nghĩa là nó chỉ có thể được gọi nếu bạn sử dụng một callback noexcept
.
Thú vị - Tôi chưa từng thấy điều này 'std :: enable_if' trước đây. Trông đầy hứa hẹn. –
Thử tốt, nhưng không hoạt động khi chuyển chức năng miễn phí sang f_async trong clang 3.5. –
http://rextester.com/RDIX55455 –