在有些项目里,接口已经定义好,我们想修改已经存在的接口,是比较困难的,假如有如下的接口定义:
void handler(int &r) {
r++;
}
template
void g(F f, P p) {
f(p);
}
调用如下:
int i = 0; handler(i); // 期望的结果 g(handler, i); // 打印i,看看结果,没有变化。不是期望的结果 // 在不改变接口的情况下,达到期望的结果 g(handler, std::ref(i));//期望的结果