std::ref

https://zhuanlan.zhihu.com/p/581739392

为了保证引用类型在经过函数模板或者类模板中的值传递过程中可以保持引用信息。这里面采用将传入变量包装成另外一个新的对象,在这个新的对象中持有被包装对象的地址信息。在函数模板和类模板的值传递过程中,对这个新的对象进行值传递,其内部的被包装的对象地址信息可以得到保存。在函数模板或者内模板内部使用这个新的对象的时候,可以通过重载的类型转换函数将被包装变量的地址信息转换还原成相应的引用,对这个引用进行操作。从而达到操作外部变量的作用