c 11 – weak_pointer_cast for weak_ptr

在c 0x中,std :: shared_ptr有一个std :: static_pointer_cast,但std :: weak_ptr没有等效的方法.这是故意的还是疏忽的?如果一个监督,我如何定义一个适当的功能?
这应该为你做:

template<class T, class U>
std::weak_ptr<T>
static_pointer_cast(std::weak_ptr<U> const& r)
{
    return std::static_pointer_cast<T>(std::shared_ptr<U>(r));
}

如果weak_ptr已过期,这将抛出异常.如果你宁愿得到一个null weak_ptr,那么可以使用r.lock().

翻译自:https://stackoverflow.com/questions/6065954/static-pointer-cast-for-weak-ptr

转载注明原文:c 11 – weak_pointer_cast for weak_ptr