Tôi đang cố gắng theo dõi this example để sử dụng lambda với remove_if
. Đây là nỗ lực của tôi:Lỗi: biến "không thể bị ẩn hoàn toàn vì không có chế độ chụp mặc định nào được chỉ định"
int flagId = _ChildToRemove->getId();
auto new_end = std::remove_if(m_FinalFlagsVec.begin(), m_FinalFlagsVec.end(),
[](Flag& device) {
return device.getId() == flagId;
});
m_FinalFlagsVec.erase(new_end, m_FinalFlagsVec.end());
nhưng điều này không biên dịch:
error C3493: 'flagId' cannot be implicitly captured because no default capture mode has been specified
Làm thế nào tôi có thể bao gồm các thông số bên ngoài, flagId
, trong biểu thức lambda?
Chế độ chụp mặc định là '[=]' (theo giá trị) và '[&]' (theo tham chiếu). '[]' có nghĩa là không chụp. – MSalters