我有一个工厂返回一个数据处理的函数。
class Factory {
function<void(Data&)> build();
}
现在我在纠结返回类型是否应该是 function<void(Data&)>
或 unique_ptr<function<void(Data&)>>
. 换句话说,std函数有多重,是可以复制来复制去,还是用智能指针管理比较好?
std::function
使用某种形式的 抹杀因此,它本身不应该太大。例如,在我用GCC和libstdc++进行的实验中,所有的 std::function
我试过有32个字节。现场演示. 因此, 动人 std::function
对象应该相对便宜(拷贝 可能是另一回事)。)
总之。std::unique_ptr
还是比较小的(通常是一个原始指针的大小),因此,它在汇编级的移动速度会更快。是否真的有关系,是一个剖析的问题。