我对以下description std :: transfrom:
感到困惑unary_op - 将应用的一元操作函数对象。 函数的签名应等同于以下内容:
Ret fun(const Type &a);
签名不需要
const &
。
这两个陈述似乎是矛盾的。有人可以澄清这里的意思吗?如果签名是Ret fun(Type a)
或Ret fun(Type&& a)
或Ret fun(Type& a)
?
答案 0 :(得分:5)
它试图说的是fun
必须是这样的:
*OutputIt = fun(*InputIt);
是合法的。还要注意
unary_op
...不得使任何迭代器无效,包括结束迭代器,或修改所涉及范围的任何元素。
,所以非const引用是合法的 - 但它不能使用非常量。