Hmm..., with boost (develop branch) + GCC 7.3 or Clang trunk,
the following code runs fine:
std::vector<int> v1{1, 1, 1};
std::vector<int> v2{2, 2, 2};
for (auto&& tpl : boost::range::combine(v1, v2)) {
auto [x, y] = tpl; // `auto&`, `auto const&` and `auto&&` also work fine
x = 10;
y = 20;
}
for (auto&& [x, y] : boost::range::combine(v1, v2)) {
x = 200;
y = 200;
}