Giả sử tôi sử dụng lambda làm hàm gọi lại và khi tạo lambda, tôi nắm bắt biến hàm cục bộ theo tham chiếu. Bây giờ giả sử rằng đối tượng lambda không được thực hiện cho đến sau khi biến hàm cục bộ đó nằm ngoài phạm vi. Chuyện gì xảy ra?Điều gì xảy ra nếu tôi nắm bắt biến cục bộ bằng tham chiếu và biến nằm ngoài phạm vi?
Tôi nhận ra rằng sẽ thật ngu ngốc nếu có ai đó làm như vậy nếu có cơ hội xảy ra, nhưng tôi gần như chắc chắn rằng ai đó sẽ làm việc đó.
Tôi không quen với C++ 11 nhưng đối với bất kỳ ngôn ngữ nào khác mà tôi đã sử dụng, việc ghi biến theo định nghĩa có nghĩa là nó không nằm ngoài phạm vi cho đến khi nó được chụp (có bất kỳ [ gián tiếp] tham chiếu đến nó). –
Không có trong C++. Trả về một lambda mà nắm bắt một biến cục bộ bằng tham chiếu có nghĩa là tham chiếu sẽ không còn hợp lệ nữa khi hàm trả về trả về. Hành vi không xác định xảy ra sau đó. –
Các hàm của chúng là tĩnh và do đó luôn luôn hợp lệ. Nhưng một 'void (**)()' * có thể * trở nên lúng túng. Còn gì nữa? –