#include <iostream>
template <class T>
struct X {
using value_type = T;
T value;
};
template <class Y, class T = typename Y::value_type>
void f(Y& y) {
T value = 42;
y.value = value;
}
int main() {
X<int> x;
f(x);
std::cout << x.value << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIFQ+CnN0cnVjdCBYIHsKICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBUOwogICAgVCB2YWx1ZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBZLCBjbGFzcyBUID0gdHlwZW5hbWUgWTo6dmFsdWVfdHlwZT4Kdm9pZCBmKFkmIHkpIHsKICAgIFQgdmFsdWUgPSA0MjsKICAgIHkudmFsdWUgPSB2YWx1ZTsKfQoKaW50IG1haW4oKSB7CiAgICBYPGludD4geDsKICAgIGYoeCk7CiAgICBzdGQ6OmNvdXQgPDwgeC52YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQo=