STL ref和cref功能

Ori*_*ent 7 c++ stl

为什么在C++中带有不同名称的两个函数refcref?为什么不是唯一的重载ref函数?是否有一些重要的语义原因?

Bri*_*ian 11

因为有时您想要包装const对非const对象的引用.在这种情况下,std::cref允许你写

std::cref(x)
Run Code Online (Sandbox Code Playgroud)

代替

std::ref(static_cast<const T&>(x))
Run Code Online (Sandbox Code Playgroud)

(T当然是哪种类型x).