#include <iostream>
void foo(int k) {
static auto bar = [&]{
std::cout << k << std::endl;
};
bar();
}
int main() {
foo(1); foo(2); foo(3); // output is correct: 1, 2, 3
}
Kiểm tra chức năng foo, một cách thức lambda tĩnh được chụp k bằng cách tham khảo. Điều này dường như hoạt động và điều tương tự cũng xảy ra với các kiểu dữ liệu phức tạp hơn thay vì int.Reference bị bắt trong định nghĩa biến tĩnh
Điều này có được mong đợi không? Có bất kỳ đảm bảo nào rằng địa chỉ của k sẽ giống nhau cho mọi yêu cầu foo hoặc là UB này?
Cảm ơn trước, và xin lỗi nếu điều này đã được trả lời trước đó (tôi đã cố gắng tìm một câu hỏi tương tự nhưng không thành công)
Adam bạn đã bỏ lỡ điểm đó một dặm, tôi sợ – sehe