当我有一个函数接收一个应该引用某些东西的(智能)指针时,我总是按如下方式开始:
class Foo;
void doSomething(const std::shared_ptr<Foo>& pFoo)
{
assert(pFoo);
// ...
}
现在我正在为(智能)指针的向量(或其他容器)寻找类似的断言条件。我能想到的最好的办法是:
void doSomething(const std::vector<std::shared_ptr<Foo> >& pFoos)
{
assert(std::all_of(pFoos.begin(), pFoos.end(), [](const std::shared_ptr<Foo>& pFoo) { return pFoo; }));
// ...
}
我想知道这是否可以改进..可以避免 lambda 吗? (我尝试使用shared_ptr的get()方法,但模板推导失败)或者是否有另一种方法来断言整个容器?
另一种方法:
assert(std::find(pFoos.begin(), pFoos.end(), nullptr) == pFoos.end());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)