- 主题:被 std::function 坑一回
怎么说呢,像网上的段子,某大学物理系贴着:
Here we know everything but nothing works.
c#这种语言配code monkey写代码,则是:
Everything works but nobody knows why. 一旦出了问题就瞪眼。
那个讨论被淘汰的技能的帖子,基本结论就是这种。
【 在 GoGoRoger 的大作中提到: 】
: 太复杂了。。。。精力都耗费在语言上了。。
: 发自「今日水木 on Mi Note 3」
--
FROM 124.114.151.*
你这么一说,是不是写个functor就行了,结构体的构造函数接unique_ptr。
然后把unique _ptr脱了,自己在析构里释放。
【 在 ilovecpp 的大作中提到: 】
: 不好。最后没调用lambda,就leak。拷贝lambda并且都调用了,就double free。
: auto up = std::make_unique<std::string>("hello");
: if (0) {
: ...................
--
FROM 117.39.224.*
我把入参的unique_ptr脱了壳,成员变量存裸指针,不行吗?
我明天试试。
【 在 ilovecpp 的大作中提到: 】
: 你这样的functor一样是不可拷贝,和楼主最早写的并无差别。
: 有的functor就是不可拷贝,std::function不该要求可拷贝。
--
FROM 1.85.207.*
好问题!所以一开始,楼主的版本,应该应该传shared_ptr
不然,照我的思路下去,就是把functor的copy ctor实现成蹩脚的shared_ptr版本。
如果不是在unique_ptr持有的类型T上,增加clone函数,实现virtual ctor 哈哈
【 在 ilovecpp 的大作中提到: 】
: 当然可以,不过你怎么实现copy ctor?
--
FROM 1.85.207.*
怎么偷?
【 在 ilovecpp 的大作中提到: 】
: 什么场景用到shared<unique>? 我们共同拥有一个对象,但我们任何一个人都可以把它偷走...
--
FROM 1.85.207.*