[英]Do I need to explicitly initialize a std::unique_ptr in the constructor?
[英]Do I need to use unique_ptr over std::function
我有一家工厂退回 function 进行数据处理
class Factory {
function<void(Data&)> build();
}
现在我正在努力返回类型应该是function<void(Data&)>
还是unique_ptr<function<void(Data&)>>
。 换句话说,std function 有多重,可以复制它还是使用智能指针更好地管理它?
std::function
使用某种形式的类型擦除,因此,它本身不应该太大。 例如,在我对 GCC 和 libstdc++ 的实验中,我尝试的所有std::function
实例都有 32 个字节: live demo 。 因此,移动std::function
对象应该相对便宜(复制可能是另一回事)。
无论如何, std::unique_ptr
仍然更小(通常是原始指针的大小),因此,它将在汇编级别移动得更快。 它是否重要是一个分析问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.