std::tie
cung cấp một cách thuận tiện để giải nén các nội dung của một tuple trong C++ vào biến được định nghĩa riêng biệt, giống như mẫu dưới đây minh họagiải nén các tuple lồng nhau trong C++
int a, b, c, d, e, f;
auto tup1 = std::make_tuple(1, 2, 3);
std::tie(a, b, c) = tup1;
Tuy nhiên, nếu chúng ta có một tuple lồng nhau như dưới đây
auto tup2 = std::make_tuple(1, 2, 3, std::make_tuple(4, 5, 6));
cố gắng để biên dịch mã
std::tie(a, b, c, std::tie(d, e, f)) = tup2;
không thành công có lỗi
/tmp/tuple.cpp:10: error: invalid initialization of non-const reference of type ‘std::tuple<int&, int&, int&>&’ from an rvalue of type ‘std::tuple<int&, int&, int&>’
std::tie(a, b, c, std::tie(d, e, f)) = tup2;
^
Có cách nào thành ngữ để giải nén một bộ tuple trong C++ không?
Có thể trùng lặp http://stackoverflow.com/questions/21298732/can-we-do-deep-tie-with-a-c1y-stdtie-like-function –
Bạn có thể tạo [tạm thời để làm tổ] (http://ideone.com/s3YLG9), mặc dù nó không phải là đẹp trai. – Cornstalks