首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么C++ 11不能将不可复制的仿函数移动到std :: function?

这个问题涉及到C++11的标准库中的std::function和移动语义。在C++11中,std::function是一个通用的函数包装器,它可以将函数和可调用对象存储为一个类型安全的可调用对象。但是,当我们使用不可复制的仿函数时,我们不能将其移动到std::function中,这是因为std::function需要对其内部的可调用对象进行复制,以便在需要时进行调用。

具体来说,std::function需要对其内部的可调用对象进行复制,以便在需要时进行调用。但是,如果我们使用的是不可复制的仿函数,那么这个复制操作就会失败,因为不可复制的仿函数不能被复制。这就是为什么我们不能将不可复制的仿函数移动到std::function中的原因。

为了解决这个问题,我们可以使用std::move将不可复制的仿函数移动到std::function中。这样,我们就可以避免复制操作,从而避免了不可复制的仿函数的问题。

总之,std::function需要对其内部的可调用对象进行复制,以便在需要时进行调用。如果我们使用的是不可复制的仿函数,那么这个复制操作就会失败。为了解决这个问题,我们可以使用std::move将不可复制的仿函数移动到std::function中,从而避免复制操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券