#include <iostream>
#include <cassert>
#include <functional>
using namespace std;
int main() {
double a = 5.;
double b = 3.;
double& ref = a;
ref = b;
assert(&ref != b); // ref is not bound to b
std::reference_wrapper<double> refwpr = a;
refwpr = b;
assert(&refwpr.get() == b); // ref wrapper was rebound to b
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWRvdWJsZSBhID0gNS47CiAgICBkb3VibGUgYiA9IDMuOwogICAgZG91YmxlJiByZWYgPSBhOwogICAgcmVmID0gYjsKICAgIGFzc2VydCgmcmVmICE9IGIpOyAvLyByZWYgaXMgbm90IGJvdW5kIHRvIGIKICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8ZG91YmxlPiByZWZ3cHIgPSBhOwogICAgcmVmd3ByID0gYjsKICAgIGFzc2VydCgmcmVmd3ByLmdldCgpID09IGIpOyAvLyByZWYgd3JhcHBlciB3YXMgcmVib3VuZCB0byBiCglyZXR1cm4gMDsKfQ==