#include <iostream>
template<class T>
void serialize(std::ostream& os, T const& obj,
decltype(obj.stream(os),char())* = 0)
{
obj.stream(os);
}
struct X{
void stream(std::ostream&) const{
std::cout << "\nX::stream()\n";
}
};
int main(){
X x;
serialize(std::cout, x);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8Y2xhc3MgVD4Kdm9pZCBzZXJpYWxpemUoc3RkOjpvc3RyZWFtJiBvcywgVCBjb25zdCYgb2JqLAogICAgIGRlY2x0eXBlKG9iai5zdHJlYW0ob3MpLGNoYXIoKSkqID0gMCkKewogIG9iai5zdHJlYW0ob3MpOwp9CgpzdHJ1Y3QgWHsKICB2b2lkIHN0cmVhbShzdGQ6Om9zdHJlYW0mKSBjb25zdHsKICAgIHN0ZDo6Y291dCA8PCAiXG5YOjpzdHJlYW0oKVxuIjsKICB9Cn07CgppbnQgbWFpbigpewogIFggeDsKICBzZXJpYWxpemUoc3RkOjpjb3V0LCB4KTsKfQ==