我想问为什么as_const
禁止使用右值参数according to cppreference.com(即为什么标准人员这样做,而不是为什么cppreference.com对此专门引用了它们。而且也不是在规范中将委员会的意图编成法规,只是为了确保:)))。这个(人工的)示例将产生一个错误(用户希望使其保持常量以保持COW安静)
QChar c = as_const(getQString())[0];
Another question's answer指出,如果仅删除右值引用重载的删除,它将默默地将右值转换为左值。是的,但是为什么不优雅地处理右值并为右值输入返回const右值,为左值输入返回const左值?
最佳答案
原因之一可能是由于缺乏所有权转移,对右值 Assets 可能存在危险
for (auto const &&value : as_const(getQString())) // whoops!
{
}
并且可能没有令人信服的用例来证明无视这种可能性的合理性。
关于c++ - 为什么as_const禁止右值参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39051460/