Tôi đang cố gắng để lặp qua một vector của các bộ:phạm vi Auto dựa bindings cấu trúc với vector
std::vector<std::tuple<int, int, int>> tupleList;
Bằng cách sử dụng một loạt dựa cho vòng lặp với các ràng buộc có cấu trúc:
for (auto&& [x, y, z] : tupleList) {}
Nhưng Visual Studio 2017 15.3.5 đưa ra lỗi:
cannot deduce 'auto' type (initializer required)
Nhưng những điều sau đây hoạt động:
for (auto&& i : tupleList) {
auto [x, y, z] = i;
}
Tại sao lại như vậy?
Tại sao bạn sử dụng '&&' chứ không phải '&'? – Charles
@Charles '&&' sẽ hoạt động ngay cả khi các phần tử là const hoặc temporaries –
Lỗi VS, nó sẽ hoạt động. Thậm chí là một trong những động lực của tính năng ngôn ngữ (lặp qua bản đồ)! – Barry