#include <iostream>
#include <vector>
#include <utility>
int main() {
std::vector<std::pair<int, float>> v = { {1, 1.5f} };
// The interesting line:
const std::pair<int, int>& x = v[0];
const auto& y = v[0];
std::cout << "before:\n";
std::cout << "\tv[0]: " << std::get<1>(v[0]) << "\n";
std::cout << "\tx: " << std::get<1>(x) << "\n";
std::cout << "\ty: " << std::get<1>(y) << "\n";
std::get<1>(v[0]) = 3.5f;
std::cout << "\nafter:\n";
std::cout << "\tv[0]: " << std::get<1>(v[0]) << "\n";
std::cout << "\tx: " << std::get<1>(x) << "\n";
std::cout << "\ty: " << std::get<1>(y) << "\n";
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDx2ZWN0b3I+CiAgICAjaW5jbHVkZSA8dXRpbGl0eT4KCiAgICBpbnQgbWFpbigpIHsKICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8aW50LCBmbG9hdD4+IHYgPSB7IHsxLCAxLjVmfSB9OwoJCiAgICAgICAgLy8gVGhlIGludGVyZXN0aW5nIGxpbmU6CiAgICAgICAgY29uc3Qgc3RkOjpwYWlyPGludCwgaW50PiYgeCA9IHZbMF07CgkgICAgCgkgICAgY29uc3QgYXV0byYgeSA9IHZbMF07CiAgICAgICAgCiAgICAgICAgc3RkOjpjb3V0IDw8ICJiZWZvcmU6XG4iOwogICAgICAgIHN0ZDo6Y291dCA8PCAiXHR2WzBdOiAiIDw8IHN0ZDo6Z2V0PDE+KHZbMF0pIDw8ICJcbiI7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJcdHg6ICAgICIgPDwgc3RkOjpnZXQ8MT4oeCkgPDwgIlxuIjsKICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0eTogICAgIiA8PCBzdGQ6OmdldDwxPih5KSA8PCAiXG4iOwoJCiAgICAgICAgc3RkOjpnZXQ8MT4odlswXSkgPSAzLjVmOwogICAgCiAgICAgICAgc3RkOjpjb3V0IDw8ICJcbmFmdGVyOlxuIjsKICAgICAgICBzdGQ6OmNvdXQgPDwgIlx0dlswXTogIiA8PCBzdGQ6OmdldDwxPih2WzBdKSA8PCAiXG4iOwogICAgICAgIHN0ZDo6Y291dCA8PCAiXHR4OiAgICAiIDw8IHN0ZDo6Z2V0PDE+KHgpIDw8ICJcbiI7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJcdHk6ICAgICIgPDwgc3RkOjpnZXQ8MT4oeSkgPDwgIlxuIjsKICAgIH0=