- 主题:被 std::function 坑一回
可能当初functor的成员变量都是些常量(e.g. bind2nd(less<double>(), 1.0),没人想到functor还会拥有别的对象吧。
而且没有move的年代,容器怎么保存用户传入的functor?显然是copy。从stl开始functor习惯上就是copyable。
【 在 milksea 的大作中提到: 】
: 我没研究过,为什么folly可以不要求可拷贝而std要求,不知道有什么考虑还是std开始没想到。如果是现有版本std库缺陷,以后增加提案放宽std::function的构造需求应该是最优解。
--
修改:ilovecpp FROM 58.37.58.*
FROM 58.37.58.*
什么场景用到shared<unique>? 我们共同拥有一个对象,但我们任何一个人都可以把它偷走...
【 在 milksea 的大作中提到: 】
: 我看到stackoverflow里面还有用shared_ptr包一层unique_ptr的处理方法,我觉得很魔道…他这个思路无非解出来就这样了吧
--
FROM 58.37.58.*
确实很魔幻.
【 在 ilovecpp (cpp) 的大作中提到: 】
: 什么场景用到shared<unique>? 我们共同拥有一个对象,但我们任何一个人都可以把它偷走...
--
FROM 120.244.224.*
就是单纯开后门绕过语法限制吧
【 在 ilovecpp 的大作中提到: 】
: 什么场景用到shared<unique>? 我们共同拥有一个对象,但我们任何一个人都可以把它偷走...
:
: 【 在 milksea 的大作中提到: 】
: ...................
--
FROM 120.36.49.*
怎么偷?
【 在 ilovecpp 的大作中提到: 】
: 什么场景用到shared<unique>? 我们共同拥有一个对象,但我们任何一个人都可以把它偷走...
--
FROM 1.85.207.*
cpp就是浪费生命
【 在 milksea 的大作中提到: 】
:
: 用到回调函数,为了支持虚函数,不用模板类型参数表示回调函数,而用了 std::function 包装。结果用 lambda 表达式传参的时候,有 move 捕获变量就编译失败了。代码类似这样:
:
: void api(std::function&& callback)
: {
#发自zSMTH@荣耀V587
--
FROM 111.60.25.*