Giả sử tôi có một lambdaLàm cách nào để thêm thuộc tính vào hàm lambda?
auto func = [](std::string msg) { throw std::runtime_error(msg); };
(thừa nhận, ví dụ này là không khôn ngoan, nhưng đó không phải là điểm). Nếu đây không phải là một lambda, nhưng một chức năng bình thường, tôi sẽ khai báo nó với thuộc tính noreturn
như trong
[[noreturn]] void func(std::string msg) { throw std::runtime_error(msg); }
thể cũng này được thực hiện cho một lambda? (Tôi đã thử vài biến thể với kêu vang 3.5, nhưng không có bất kỳ thành công.)
chỉnh sửa Sử dụng Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
, tôi đã cố gắng
auto func = [](std::string msg) -> [[noreturn]] void { throw std::runtime_error(msg); };
hoặc
auto func = [](std::string msg) [[noreturn]] { throw std::runtime_error(msg); };
nhưng cả hai đều từ chối. Đây có phải là sự thiếu sót/lỗi của clang 3.5 không?
Xem [Cách khai báo toán tử lambda() dưới dạng noreturn?] (Http://stackoverflow.com/q/26888805/1708801) –
@ShafikYaghmour Thật vậy. Tôi đã bỏ lỡ điều đó trước khi hỏi. Được đánh dấu câu hỏi của riêng tôi là dupe ngay bây giờ ... – Walter