通过结构化绑定从 pair/tuple 个元素移动

Moving from pair/tuple elements via structured binding

鉴于 std::pair<std::set<int>, std::set<int>> p,通过结构化绑定移动其元素的正确语法是什么?

怎么做

std::set<int> first_set  = std::move(p.first);
std::set<int> second_set = std::move(p.second);

通过结构化绑定语法?以下是否等同于以上?

auto&& [first_set, second_set] = p;

Is the following equivalent to the above?

没有,没有move操作,只是p的成员变量绑定了左值引用first_setsecond_set。你应该这样做:

auto [first_set, second_set] = std::move(p);