【发布时间】:2015-01-10 21:14:57
【问题描述】:
例如:
std::weak_ptr<int> wp1(std::make_shared<int>());
std::weak_ptr<int> wp2;
assert(PointsToValidOrExpiredObject(wp1));
assert(!PointsToValidOrExpiredObject(wp2));
这样的功能可能吗?
用例:类的构造函数将std::weak_ptr<Foo> 作为依赖项。传递过期对象是可以的(可能在某些工作流程中发生),但传递 null 意味着程序员忘记了一些东西。作为构造函数参数验证的一部分,我想对此进行测试。
【问题讨论】:
-
看
expired()方法了吗? -
@Borgleader。是的——不幸的是,这两种情况都返回 true。
-
虽然似乎有一个答案,但一个不那么神奇的解决方案可能是将弱指针包装在一个只能用非空共享指针构造的类型中,并要求它而不是原始弱指针。