c++包装引用

在有些项目里,接口已经定义好,我们想修改已经存在的接口,是比较困难的,假如有如下的接口定义:

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));//期望的结果