gpt4 book ai didi

c++ - 为什么 std::function 本身是可复制构造的类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:50 25 4
gpt4 key购买 nike

我发现规范的 tr.func.require 部分要求 std::function 在 C++11 中是可复制构造的,而且我已经看到了很多解释为什么这意味着用于构造 std::function 的仿函数必须是可复制的,但为什么 C++11 标准首先使 std::function 可复制放置,而不是使其成为仅移动类型?

最佳答案

std::function 是在 C++11 之前实现的,当时移动语义尚不可用(它源于 boost::function 并且是 TR1 的一部分)。

我的猜测是 std::function 在移动语义之前被指定(并且可能投票进入标准)。鉴于此,他们没有时间审查标准的所有其余部分。另见 this answer关于why shared_ptr deleters have to be CopyConstructible .

此外,出于兼容性原因,突然使 std::function 移动可构造并删除其复制构造函数听起来不合理。

关于c++ - 为什么 std::function 本身是可复制构造的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com